如何从php的字符串中删除ASCII换行字符(nl)和载波返回字符(cr)


How to remove ASCII newline characters (nl) and carrier return characters (cr) from a string in php

我必须从php字符串中删除并替换ASCII换行字符(nl)和载波返回字符(cr)。

我尝试使用以下语句将$input中的所有ASCII (nl)字符替换为空白,但不工作:

preg_replace('/['x0a]+/',' ',$input);

然后我尝试用空格替换所有的ASCII控制字符,下面是语句:

ereg_replace('[[:cntrl:]]', ' ', $encoded); // didn't work

我还尝试了以下语句,但没有成功:

ereg_replace("[:cntrl:]", "", $pString);
preg_replace('/['x00-'x1F'x7F]/', '', $input);
preg_replace('/['x00-'x09'x0B'x0C'x0E-'x1F'x7F]/', '', $input);

从php字符串中删除ASCII换行字符(nl)和载波返回字符(cr)的正则表达式是什么?

我在下面引用了几个链接:
ASCII表
正则表达式
正则表达式posix

你不能直接使用str_replace吗?

str_replace( array("'n", "'r"), "", $stringinput );

为什么使用regexp?

怎么了?
str_replace(array("'n", "'r"), "", $string);

?在PHP中,字符'n和'r保证是实际的换行符和回车符:http://php.net/manual/en/language.types.string.php

如果您坚持使用preg_replace()来完成这样一个简单的任务,您可以使用:

$result = preg_replace('/['r'n]/', '', $subject);

尽管,您应该按照先前的建议使用str_replace(array("'n", "'r"), "", $string);