我想找到字符串中的单词数。我使用下面的正则表达式来做同样的事情。
$count_keys = preg_match_all('/\bs.c.\b/', $str);
这里$ str是我们需要找到单词sc的出现次数的字符串,但是我得到错误的结果说如果他们是一个单词#ssc或#sssc他们是也算数了。请指导我在哪里犯错误,或者请给出正确的正则表达式代码。
答案 0 :(得分:3)
试试这个:
$str = 'this is a s.c good to check s.c ';
echo $count_keys = preg_match_all('/\bs\.c/', $str);
<强>输出:强>
2
答案 1 :(得分:1)
我相信问题是你的正则表达。如果您正在寻找“s.c”的出现,试试这个:
$count_keys = preg_match_all('/\bs\.c\b/', $str);
你在“。”之前错过了一个“\”。这导致了一个问题,因为“。”匹配正则表达式中的任何字符(换行符除外)。
但是,如果您正在寻找“s.c.”的出现次数。然后试试这个:
$count_keys = preg_match_all('/\bs\.c\.\b/', $str);
答案 2 :(得分:0)
使用substr_count()而不是preg_match_all
<?php
$text = 'This is a test';
echo strlen($text); // 14
echo substr_count($text, 'is'); // 2
// the string is reduced to 's is a test', so it prints 1
echo substr_count($text, 'is', 3);
// the text is reduced to 's i', so it prints 0
echo substr_count($text, 'is', 3, 3);
// generates a warning because 5+10 > 14
echo substr_count($text, 'is', 5, 10);
// prints only 1, because it doesn't count overlapped substrings
$text2 = 'gcdgcdgcd';
echo substr_count($text2, 'gcdgcd');
?>