substr count返回错误的结果

时间:2012-11-02 04:29:20

标签: php regex substring

我使用substr_count来计算单词的使用次数。   但它没有返回我想要的结果。 这是我的示例代码:

<?php
    echo substr_count("The Hello world. Therefore the world is nice","the");
?>

这将返回数字3,即3个字符串。我希望它只返回2.因为有2个。第三个是这个词的一部分所以它不是一个。 我想到了正则表达,但我对那些并不是很好。有什么建议吗?

5 个答案:

答案 0 :(得分:3)

您需要在the之后添加空格,它只能包含那些后面有空格的the

  <?php
        echo substr_count("The Hello world. Therefore the world is nice","the ");
    ?>

答案 1 :(得分:1)

这是计算子字符串出现的另一种方法,

<?php
 $string = "The Hello world. Therefore the world is nice";
 $substring = 'the';

 $cArr = explode($substring,strtolower($string));
 echo $substring_count = count($cArr) - 1;
?>

OR

$wordCounts = array_count_values(str_word_count(strtolower($string),1));
echo $theCount = (isset($wordCounts['the'])) ? $wordCounts['the'] : 0;

答案 2 :(得分:0)

我认为substr_count的用法不同。 语法:

 int substr_count ( string $haystack , string $needle [, int $offset = 0 [, int $length ]] )

substr_count()返回在haystack字符串中出现针子串的次数。请注意针头区分大小写。

请参考 http://php.net/manual/en/function.substr-count.php

答案 3 :(得分:0)

有3'的。 因此和

试试这个:

<?php
   echo substr_count("The Hello world. Therefore the world is nice","the ");
?>

答案 4 :(得分:0)

<?php
  echo preg_match_all('/\bthe\b/i', 'The Hello World. Therefore the world is nice', $m);
?>

第一个参数是模式,其中\b表示单词边界,/i修饰符表示敏感内容。

第二个参数是匹配的主题。

第三个参数用匹配数组填充。我的旧PHP需要它,5.4以后的版本不应该要求它。