18

使用重新编号数组时

$arr=array_values($arr); // Renumber array

我意识到在其中一个数组字符串中引入了换行符,这是我不想要的。

我的字符串来自:

财产类型

到财产

类型

无论如何,我正在使用:

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

已经在插入数据库之前删除了不需要的字符,所以我尝试将其更改为:

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

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

我是否正确地进行了 preg_replace 调用?

4

4 回答 4

39

那个preg看起来有点复杂。然后你在开始时有 ^不是AZ... 或换行符。所以你不想替换换行符?

怎么样

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

或者

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

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

于 2012-09-19T15:59:17.900 回答
6

这也应该有效:

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

// For LF
$element = strtr($element, chr(10), chr(32));
于 2012-09-19T16:09:07.803 回答
4

这件事对我有用。

preg_replace("/\r\n\r\n|\r\r|\n\n/", "<br />", $element);
于 2015-10-26T08:47:41.510 回答
1

这是一个黑客,但你可以做这样的事情:

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

替换说找到一个以等号结尾的行,然后有标准的回车和换行字符。将这些字符替换为空(“”),等号将消失。它下面的线将被拉起以加入第一条线。

现在,这意味着您永远不会有一条以等号结尾的线,这是一种风险。如果您想做得更好,请检查出现换行(带有等号)的行长。通常从行首开始大约有 73 个字符。然后你可以说:

    if (strlen(equals sign) == 73)
       $email_body_string  = preg_replace("/\=\r\n$/", "", $email_body_string);
于 2016-03-09T16:39:14.027 回答