这不起作用:
$string = 'Hello
world';
if(strpos($string, '\n')) {
echo 'New line break found';
}
else {
echo 'not found';
}
显然因为字符串中没有“\ n”字符。但是我怎么能检查是否有换行是用户在表单字段中按Enter键的结果?
答案 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)
换行符为\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系统中创建的文件,则无法使用。