如何在PHP中将字符串从多行转换为单行?

edt*_*edt 9 php csv string

是否有PHP字符串函数将多行字符串转换为单行字符串?

我从包含多行的API中获取了一些数据.例如:

<p>Some Data</p>

<p>Some more Data</p>

<p>Even More Data</p>
Run Code Online (Sandbox Code Playgroud)

我将该数据分配给变量,然后将该变量作为CSV文档的部分/"单元"进行回显.

它打破了我的CSV文档.它不是显示在一个单元格中的所有内容(在OpenOffice Calc中查看时),而是显示在多个单元格和行中.它应该包含在一个单元格内.

我想将字符串转换为:

<p>Some Data</p><p>Some more Data</p><p>Even More Data<p>
Run Code Online (Sandbox Code Playgroud)

或者,最好的解决方法是什么?

Pet*_*ist 30

线转换技术

方法1

要删除结束和打开</ p> ... <p>标记之间不必要的任何内容,您可以使用正则表达式.我还没有清理它,所以它只是供参考.

$str = preg_replace("/(\/[^>]*>)([^<]*)(<)/","\\1\\3",$str);
Run Code Online (Sandbox Code Playgroud)

它将剥离p标记之间的任何内容,例如换行符,空格或任何文本.

方法2

再次使用delete-only-linebreaks-and -lineslines方法

$str = preg_replace("/[\r\n]*/","",$str);
Run Code Online (Sandbox Code Playgroud)

方法3

或者使用更快但不灵活的简单字符串替换方法

$str = str_replace(array("\r","\n"),"",$str);
Run Code Online (Sandbox Code Playgroud)

选择一下!

对照

让我们比较一下我的方法

性能

性能总是相对于最快的方法,在这种情况下是第二个.

(越低越好)

Approach 1   111
Approach 2   300
Approach 3   100
Run Code Online (Sandbox Code Playgroud)

结果

方法1
剥离标签之间的所有内容

方法2和3
剥离换行符和换行符

  • 我会在方法3中向数组添加"\ t",以防有标签符号 (2认同)

Ben*_*ard 5

这只会删除换行符,您显然不想删除空格,因为这将应用于段落标记中的字符串。

$str = str_replace(array("\n", "\r"), '', $str);
Run Code Online (Sandbox Code Playgroud)