是否有PHP字符串函数将多行字符串转换为单行字符串?
我从包含多行的API中获取一些数据。例如:
<p>Some Data</p>
<p>Some more Data</p>
<p>Even More Data</p>
我将该数据分配给变量,然后将该变量作为CSV文档的一部分/“单元”进行回显。
它破坏了我的CSV文档。 它不是显示在一个单元格中的所有内容(在OpenOffice Calc中查看时),而是显示在多个单元格和行中。它应该包含在一个单元格中。
我想将字符串转换为:
<p>Some Data</p><p>Some more Data</p><p>Even More Data<p>
或者,最好的解决办法是什么?
答案 0 :(得分:30)
删除结束和开始之间不必要的任何内容&lt; / p&gt; ...&lt; p&gt;您可以使用正则表达式的标签。我还没有清理它,所以它只是供参考。
$str = preg_replace("/(\/[^>]*>)([^<]*)(<)/","\\1\\3",$str);
它将剥离p标记之间的任何内容,例如换行符,空格或任何文本。
再次使用delete-only-linebreaks-and-newlines方法
$str = preg_replace("/[\r\n]*/","",$str);
或者使用更快但不灵活的简单字符串替换方法
$str = str_replace(array("\r","\n"),"",$str);
选择!
让我们比较一下我的方法
性能总是相对于最快的方法,在这种情况下是第二种。
(越低越好)
Approach 1 111
Approach 2 300
Approach 3 100
方法1
剥离标签之间的所有内容
方法2和3
剥离换行符和换行符
答案 1 :(得分:4)
这将仅删除换行符,您显然不想删除空格,因为这会应用于段落标记中的字符串。
$str = str_replace(array("\n", "\r"), '', $str);
答案 2 :(得分:2)
我发现将多行字符串组成一行的最佳方法就像这样
$newstring = str_replace(array("\r\n", "\n", "\r"), '', $oldstring);
这与其他答案类似,但添加了“\ r \ n”,它必须是数组的初始部分, 所以它不会加倍。
答案 3 :(得分:1)
您只需要从字符串中删除所有新行(\ n)和回车符(\ r \ n)。在PHP中,这很简单:
$string = str_replace(array("\n", "\r"), '', $string);
答案 4 :(得分:0)
只是因为任何人都无法在上面的答案中找到答案,发现了这个:
$ newVariabe = preg_replace('/ \ s + /','_',$ oldVariable);
source
答案 5 :(得分:0)
只有一行而不是多行,并在文本之间保留一个制表符和空格。
$text="
test1
test2
tets4
test5
test6 test8 test9
test10
";
$lines = explode("\r\n", $text);
$data="";
foreach($lines as $line)
{
if($line=="")
{
$isline=1;
}
else
$isline=0;
if($isline==0 && $line!="")
{
$data.=$line."\n";
}
}