检查字符串是否包含(CR、LF或CF或LF)或未使用PHP

检查字符串是否包含(CR、LF或CF或LF)或未使用PHP,php,string,Php,String,我有一个字符串,我想控制字符串的内容 是否包含(CR、LF或CRLF) if (no CR, LF or CF or LF) in string: echo 'no sepator'; else: echo 'have some separator'; 这里的任何人都可以告诉我在php中执行此操作的方法。此函数检查输入字符串是否有任何新行字符组合 function hasNewLine($str) { $found = false; foreach (

我有一个字符串,我想控制字符串的内容
是否包含
(CR、LF或CRLF)

 if (no CR, LF or CF or LF) in string: 
    echo 'no sepator';
  else:
     echo 'have some separator';

这里的任何人都可以告诉我在php中执行此操作的方法。此函数检查输入字符串是否有任何新行字符组合

function hasNewLine($str) {
    $found = false;
    foreach (array("\r", "\n", "\r\n", "\n\r") as $token) {
        if (strpos($str, $token) !== false) {
            $found = true;
            break;
        }
    }
    return $found;
}
这个函数还有另一个版本,它检测给定字符串以新行字符结尾的

function endsWithNewLine($str) {
    $found = false;
    foreach (array("\r", "\n", "\r\n", "\n\r") as $token) {
        $desiredPos = strlen($str) - strlen($token);
        if (strpos($str, $token) === $desiredPos) {
            $found = true;
            break;
        }
    }
    return $found;
}

如果您正在查找
\n
中的
\n\r
,则无需查找
\n\r
,因为
\n
已在
\n\r
字符串中。

我建议优化您的代码和
endsWithNewLine
,您可以使用:
如果(trim($str)=$str)
{str,这是一段很好的代码,来自那些仍然学习基础知识的人,但是请继续学习它?很抱歉不同意这里的观点,但是
for loop
+
str_pos
,如果在字符串的开头找到了字符,并且该字符串有500k长,那么您仍然会阅读所有的代码吗?开始学习PHP?现在是学习的时候了我同意这段代码是有效的,但就我个人而言,有更好的方法来实现它。我不是php的初学者!我有大约两年的工作经验!我知道,也许有十几种方法可以改善功能。我只是想快速回答…:(看,有很多方法可以做事情,我只是想让你意识到在stackoverflow上快速回答可能不会一直给你最好的答案
strstr
很慢!为什么不
strpos()
?;@Derek PHP没有
str_pos()
函数。我想当您尝试快速回复时会发生这种情况@亚历克斯·斯特斯特并不慢。拜托,别再迷信了,崔林德里克,听着,你把你的代码弄得更糟了,只是因为有个崔林想取笑你。
function hasNewLine($str) {
    return (strpos($str, "\n") !== false) || (strpos($str, "\r") !== false);
}
var_dump(hasNewLine("my stringn\n\rmy string"));