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

TK1*_*123 29 php

这不起作用:

$string = 'Hello
    world';

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

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

rdl*_*rey 72

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

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

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

if(strstr($string, PHP_EOL)) {

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

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

  • 这是一个错误的答案,因为PHP_EOL在操作系统之间有所不同. (3认同)
  • 是不是用户的计算机依赖而不是服务器依赖于您从亲爱的用户那里收到的行结尾? (2认同)

spr*_*tex 5

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

preg_match('/\R/', $string)
Run Code Online (Sandbox Code Playgroud)

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

检查 PHP_EOL 的建议答案

if(strstr($string, PHP_EOL)) {
Run Code Online (Sandbox Code Playgroud)

例如,如果您在 Windows 系统上并检查在 Unix 系统中创建的文件,则该命令将不起作用。