Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检测字符串中是否有新的换行符?_Php - Fatal编程技术网

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

Php 如何检测字符串中是否有新的换行符?,php,Php,这不起作用: $string = 'Hello world'; if(strpos($string, '\n')) { echo 'New line break found'; } else { echo 'not found'; } 显然,因为字符串中没有“\n”字符。但是,还有什么方法可以检查用户在表单字段中按enter键是否导致换行?现有测试无法工作,因为您没有在换行符周围使用双引号('\n')。将其更改为: if(strstrstr($string,“\n”)

这不起作用:

$string = 'Hello
    world';

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

显然,因为字符串中没有“\n”字符。但是,还有什么方法可以检查用户在表单字段中按enter键是否导致换行?

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

if(strstrstr($string,“\n”){

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

if(strstrstr($string,PHP_EOL)){

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

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

换行符在windows和UNIX机器上是
\r\n
,在UNIX机器上是
\n

因此,它搜索
PHP\u EOL
而不是“\n”以实现跨操作系统兼容性,或者同时搜索“\r\n”和“\n”。

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

preg_match('/\R/', $string)
\R
来自PCRE,与:
(?>\R\n |\n |\R |\f |\x0b | \x85 | \x{2028}\x{2029})相同。

检查PHP\u EOL的建议答案

if(strstr($string, PHP_EOL)) {

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

尝试用PHP\u EOL替换“\n”。也许您应该使用双引号:
“\n”
预匹配('/[\n\r]/'))
你想知道当他们按enter键时如何提交表单吗?如果是这样,你就不需要了。只要submit按钮使submit按钮生效,它就应该在enter键上提交。使用双引号。单引号不会将
\n
解释为换行符,而是咖啡雨:试着按shift enter键,这不是用户的计算机依赖项吗我不是说你从亲爱的用户那里得到的行尾取决于服务器吗?我只是泛泛地说……我总是尝试使用
PHP_EOL
,所以我的代码在任何情况下都能工作。但是如果你处理的是来自用户的数据,你是对的。这是一个不好的答案,因为PHP_EOL在不同的操作系统之间是不同的。@rdlowrey,你是怎么做到的但是如果我想检测字符串是否以换行符开头。就像有人在textarea字段中键入一样。我尝试了:
if(substr($value,0,1)=“\n”){//code}
这对我很有用…谢谢,如果两个换行符都包含
\n
,那么你只需要搜索
\n
就可以跨操作系统兼容了-为了简单地“检测”换行。