PHP删除换行符或CR-LF没有成功


PHP remove line break or CR LF with no success

我用php做了一个删除换行符的函数,但没有成功,我尝试了所有替换代码,但我仍然得到了这些换行符,我创建了一个json文件,我不能用jquery从jsonp中读取它,因为这些换行符似乎会破坏它。

function clean($text)
{
$text = trim( preg_replace( '/'s+/', ' ', $text ) );  
$text = preg_replace("/('r'n|'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("'r'n", "'n", "'r"), ' ', $text)

下面的怎么样

function clean($text)
{
    return trim(preg_replace("/('s*['r'n]+'s*|'s+)/", ' ', $text));
}

第一部分's*['r'n]+'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, " 't'n'r'0'x0B"); 

阅读官方文件http://php.net/manual/ru/function.trim.php

也许您可以尝试逐个字符遍历文本,并在每个字符上调用ord(),这样您就可以看到这些中断字符是否真的是'r,'ns?

最近,我遇到了一个类似的问题,空白是一个不可破坏的空间,甚至不在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(''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、''n和''t是最常用的字符。

function clean($text)
{
    return trim(preg_replace('/''''r|''''n|''''t/i', ' ', $text));
}

工作良好。