如何检测字符串中是否有新的换行符?

时间:2012-02-24 19:52:01

标签: php

这不起作用:

$string = 'Hello
    world';

if(strpos($string, '\n')) {
    echo 'New line break found';
}
else {
    echo 'not found';
}

显然因为字符串中没有“\ n”字符。但是我怎么能检查是否有换行是用户在表单字段中按Enter键的结果?

3 个答案:

答案 0 :(得分:65)

您现有的测试不起作用,因为您没有在换行符('\n')周围使用双引号。将其更改为:

if(strstr($string, "\n")) {

或者,如果您想要跨操作系统兼容性:

if(strstr($string, PHP_EOL)) {

另请注意,strpos将返回0,如果第一个字符为\n,则您的语句将评估为FALSE,因此strstr是更好的选择。或者,您可以将strpos用法更改为:

if(strpos($string, "\n") !== FALSE) {
  echo 'New line break found';
}
else {
  echo 'not found';
}

答案 1 :(得分:3)

Windows上的

换行符为\r\n,在UNIX机器上为\n。 所以它搜索PHP_EOL而不是“\ n”以获得跨操作系统兼容性,或搜索“\ r \ n”和“\ n”。

答案 2 :(得分:0)

检测可能来自不同操作系统的文本中的新行的最可靠方法是:

preg_match('/\R/', $string)

\R来自PCRE,与以下内容相同:(?>\r\n|\n|\r|\f|\x0b|\x85|\x{2028}|\x{2029})

检查PHP_EOL的建议答案

if(strstr($string, PHP_EOL)) {

如果您使用的是Windows系统并检查在Unix系统中创建的文件,则无法使用。