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

新手上路,请多包涵

这不起作用:

 $string = 'Hello
    world';

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

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

原文由 user967451 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

您现有的测试不起作用,因为您没有在换行符周围使用双引号 ( '\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';
}

原文由 rdlowrey 发布,翻译遵循 CC BY-SA 3.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 系统中创建的文件,则将不起作用。

原文由 sprutex 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏