我需要检测多个\n
。无论是2还是1000都没关系,只要它超过一个\n
。什么是正则表达式(如果正则表达式是必要的)?
修改
我正在使用它:
$pregmatch = preg_match('#\\n\\n+#', $locations);
if ($pregmatch > 0) {
echo 'more than one, this many: '.count($pregmatch);
} else
echo 'less than one';
但count($pregmatch)
未返回检测到的多个\n
的实际数量。怎么能实现呢?
答案 0 :(得分:3)
您一般在寻找超过1 \n
吗?如果是的话:
if (preg_match_all('#\\n#', $string, $matches) > 1) {
//More than 1 \n
}
或没有正则表达式:
if (substr_count($string, "\n") > 1) {
//More than 1 \n
}
甚至(但效率低得多):
$chars = count_chars($string);
if (isset($chars[ord("\n")]) && $chars[ord("\n")] > 1) {
//More than 1 \n
}
如果连续:
if (preg_match_all('#\\n\\n+#', $string, $matches) > 0) {
//More than 1 \\n in a row
}
修改:因此,根据您的修改,我可以总结出您想知道的两种可能性。
如果您想知道一行中\n
个字符的数量(超过1个),您可以这样做:
if (preg_match('#\\n\\n+#', $string, $match)) {
echo strlen($match[0]) . ' Consecutive \\n Characters Found!';
}
或者,如果您想知道每次出现:
if (preg_match_all('#\\n\\n+#', $string, $matches)) {
echo count($matches) . ' Total \\n\\n+ Matches Found';
foreach ($matches[0] as $key => $match) {
echo 'Match ' . $key . ' Has ' .
strlen($match) . ' Consecutive \\n Characters Found!';
}
}
答案 1 :(得分:0)
答案 2 :(得分:0)
您需要提供/ m修饰符,以便扫描范围超过在线:
if (preg_match('/\n\n/m', $str)) {
echo "match";
} else {
echo "no match";
}
答案 3 :(得分:0)
你可以避免使用正则表达式,节省CPU,这是一种优雅而棘手的方式:
$text_parts = explode("\n", $original_string);
现在你可以加入它,用以下内容代替换行符:
$new_string = implode("<br />", $text_parts);
我希望这会有所帮助