我用php做了一个删除换行符的函数,但没有成功,我尝试了所有替换代码,但我仍然得到了这些换行符,我创建了一个json文件,我不能用jquery从jsonp中读取它,因为这些换行符似乎会破坏它。
function clean($text)
{
$text = trim( preg_replace( '/s+/', ' ', $text ) );
$text = preg_replace("/(rn|n|r|t)/i", '', $text);
return $text;
}
当我查看源代码时,在所有href、img和br中都有换行符这是jsonencode输出示例:
<a
href="http://example.com/out/content/" title="link to content website">
a后断线。img src和br
我唯一能去除这些的方法就是用破坏它
$text = preg_replace("/s/i", '', $text);
但你知道,所有的字符串都没有空间了,这不是我们想要的。
这个替换对我来说效果更好:
= str_replace (array("rn", "n", "r"), ' ', $text)
下面的怎么样
function clean($text)
{
return trim(preg_replace("/(s*[rn]+s*|s+)/", ' ', $text));
}
第一部分s*[rn]+s*
将替换任何换行符,它是前导空格,它是尾随空格,只包含一个空格。
第二部分CCD_ 2将空间收缩为一个空间。
则CCD_ 3去除前导/尾随空间。
这个怎么样:
function clean($text)
{
$parts = explode(' ', $text);
foreach ($parts as $key => $value)
$parts[$key] = preg_replace('/s/', ' ', $value);
return implode(' ', $parts);
}
事实上,如果您可以使用JSON_encode来创建JSON文件,而不是像这样清理JSON文件,那么您将在前一步中解决这个问题。
尝试将默认修剪函数与"character_mask"一起使用。
例如:
$text = trim($text, " tnr x0B");
阅读官方文件http://php.net/manual/ru/function.trim.php
也许您可以尝试逐个字符遍历文本,并在每个字符上调用ord()
,这样您就可以看到这些中断字符是否真的是r,n
s?
最近,我遇到了一个类似的问题,空白是一个不可破坏的空间,甚至不在ASCII表内(ord代码194或其他什么)。
如果你感兴趣,我的解决方案不是尝试过滤中断,而是过滤除文本中预期内容之外的所有内容,比如:
$text = preg_replace("/[^ na-zа-я0-9`~!@#$%^&*()_+-=[]{}\|;:'",./<>?]+/ui", "", $text);
如果你想删除CR并保留LF,这真的很简单(只是常识):
$text = str_replace("r", "", $text);
使用json扩展中的json_encode()和json_decode()来处理json反序列化任务:
$myobj = array( 'foo' => 'bar', 'foz' => 'baz')
$json_myobj = json_encode($myobj);
echo $json_myobj;
$myobj = json_decode($json_myobj);
print_r($myobj);
我使用的方法是echo str_replace(array('rn', 'r', 'n', 't'), array('\r\n', '\r', '\n', '\t'), $text);
这样做的目的是让您可以看到是什么字符导致了文本中的中断,并适当地替换它们。例如,如果您的文本被"\n"打断,当您使用此代码时,它会在其位置显示一个"\n"。示例:
<a
href="http://example.com/out/content/" title="link to content website">
将变成:
<an href="http://example.com/out/content/" title="link to content website">
当然,还有大量其他中断字符可以使用,但\r\n、\r\n、\n和\t是最常用的字符。
function clean($text)
{
return trim(preg_replace('/\\r|\\n|\\t/i', ' ', $text));
}
工作良好。