php preg_replace替换换行符

时间:2012-09-19 15:51:25

标签: php regex

使用

重新编号数组时
$arr=array_values($arr); // renumber array

我意识到在一个数组字符串中引入了一个换行符,我不想这样做。

我的字符串来自:

属性       型

到Property

类型

无论如何我都在使用:

$newelement=preg_replace("/[^A-Za-z0-9\s\s+]/"," ",$element); 

已经在db插入之前删除不需要的charchters,所以我尝试将其更改为:

 $newelement=preg_replace("/[^A-Za-z0-9\s\s+'<br>''<br>''/n''/cr']/"," ",$element);

但是没有变化,并且?换行/换行/回车仍然存在。

我正确地进行了preg_replace吗?

4 个答案:

答案 0 :(得分:29)

那个preg看起来有点复杂。然后你在开头有^作为非A-Z ..或换行。所以你不想替换换行符?

怎么样

$newelement=preg_replace("/[\n\r]/","",$element);

$newelement=preg_replace("/[^A-Za-z ]/","",$element);

\ s也匹配换行符(\ n)

答案 1 :(得分:5)

这可能也有效:

// char(32) is whitespace
// for CR
$element = strtr($element, chr(13), chr(32));

// for LF
$element = strtr($element, chr(10), chr(32));

答案 2 :(得分:2)

这件事对我有用。

preg_replace("/\r\n\r\n|\r\r|\n\n/", "<br />", $element);

(编辑添加缺失的斜杠)

答案 3 :(得分:1)

它是黑客,但你可以这样做:

    $email_body_string  = preg_replace("/\=\r\n$/","", $email_body_string);

替换说找到一条以等号结尾的行,并且后面有标准的回车符和换行符。用任何东西替换这些字符(&#34;&#34;)并且等号将消失,它下方的线将被拉起以加入第一行。

现在,这意味着你永远不会有一个以等号结尾的行,这是一种风险。如果您想更好地完成它,请检查包裹(带有等号)的行长度。从行的开头通常大约有73个字符。然后你可以说:

    if (strlen(equals sign) == 73)
       $email_body_string  = preg_replace("/\=\r\n$/","", $email_body_string);