[英]PHP remove line break or CR LF with no success
我做了一个功能,用PHP删除换行没有成功,我尝试了所有替换代码,我仍然得到这些换行,我创建一个json文件,我无法从jsonp与jquery读取它因为这些换行似乎打破一切。
function clean($text)
{
$text = trim( preg_replace( '/\s+/', ' ', $text ) );
$text = preg_replace("/(\r\n|\n|\r|\t)/i", '', $text);
return $text;
}
当我查看源代码时,在所有href,img和br中都会出现一些换行符,这是一个json_encode输出示例:
<a
href=\"http:\/\/example.com\/out\/content\/\" title=\"link to content website\">
换行a。 img src和br是hapenig
我可以删除这些的唯一方法打破它
$text = preg_replace("/\s/i", '', $text);
但是你明白所有字符串都没有空间,这不是我们想要的。
这个替换对我来说效果更好:
= str_replace (array("\r\n", "\n", "\r"), ' ', $text)
以下怎么样?
function clean($text)
{
return trim(preg_replace("/(\s*[\r\n]+\s*|\s+)/", ' ', $text));
}
第一部分\\s*[\\r\\n]+\\s*
将替换任何换行符,它是前导空格,它只是将空格拖入一个空格。
第二部分\\s+
将空间缩小为一个空格。
然后trim()
删除前导/拖尾空间。
尝试使用带有“character_mask”的默认修剪功能。
例如:
$text = trim($text, " \t\n\r\0\x0B");
这个怎么样:
function clean($text)
{
$parts = explode(' ', $text);
foreach ($parts as $key => $value)
$parts[$key] = preg_replace('/\s/', ' ', $value);
return implode(' ', $parts);
}
实际上,如果不是像这样清理JSON文件,你可以使用json_encode来创建它,你将在上一步中解决这个问题。
function clean($text)
{
return trim(preg_replace('/\\\\r|\\\\n|\\\\t/i', ' ', $text));
}
工作良好。
如果你想删除CR并保留LF,它真的很简单(只是常识):
$text = str_replace("\r", "", $text);
使用JSON扩展中的json_encode()和json_decode()来处理JSON de / serialization任务:
$myobj = array( 'foo' => 'bar', 'foz' => 'baz')
$json_myobj = json_encode($myobj);
echo $json_myobj;
$myobj = json_decode($json_myobj);
print_r($myobj);
也许你可以尝试按字符ord()
文本并在每个字符上调用ord()
,这样你就可以看到这些中断字符是否真的是\\r,\\n
s?
最近我遇到了一个类似的问题,一个空白,结果是一个不可破坏的空间,甚至在ASCII表(ord代码194或其他东西)内也没有。
如果您感兴趣我的解决方案不是尝试过滤中断,而是过滤一切除了预期在文本中的内容,如下所示:
$text = preg_replace("/[^ \na-zа-я0-9`~\!@#\$%\^&\*\(\)_\+\-\=\[\]\{\}\\\|;\:'\",\.\/\<\>\?]+/ui", "", $text);
我使用的方法是echo str_replace(array('\\r\\n', '\\r', '\\n', '\\t'), array('\\\\r\\\\n', '\\\\r', '\\\\n', '\\\\t'), $text);
这样做可以让你看到哪些字符导致文本中断,并适当地替换它们。 例如,如果您的文本有“\\ n”,那么当您使用此代码时,它将在其位置显示“\\ n”。 例:
<a
href=\"http:\/\/example.com\/out\/content\/\" title=\"link to content website\">
会成为:
<a\n href=\"http:\/\/example.com\/out\/content\/\" title=\"link to content website\">
当然,可以使用大量其他破坏字符,但\\ r \\ n,\\ r,\\ n和\\ t是最常用的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.