PHP:如何搜索和计算字符串中的指定文本?

时间:2009-08-13 15:13:09

标签: php

我完全不知道如何做到这一点,因为我不是正则表达式专家。

但我想在长字符串中搜索和计算指定的CASE-INSENSITIVE文本,例如:

功能:

int count_string ( string $string_to_search, string $input_search )

示例用法和结果:

$my_string = "Hello my name is John. I love my wife, child, and dog very much. My job is a policeman.";

print count_string("my", $my_string); // prints "3"
print count_string("is", $my_string); // prints "2"

有没有内置功能可以做到这一点?

任何形式的帮助将不胜感激:)

2 个答案:

答案 0 :(得分:9)

substr_count()正是您要找的。

substr_count(strtolower($ string),strtolower($ searchstring))会使计数不敏感。 (由gnarf提供)

答案 1 :(得分:2)

preg_match_all()返回正则表达式的多个匹配项 - 重写示例:

 echo preg_match_all("/my/i", $my_string, $matches);
 echo preg_match_all("/is/i", $my_string, $matches);

虽然 - preg_match_all对于简单的子字符串搜索来说有点过分 - 如果你想计算字符串中数字的数量,可能会更有用:

 $my_string = "99 bottles of beer on the wall, 99 bottles of beer\n";
 $my_stirng .= "Take 1 down pass it around, 98 bottles of beer on the wall\n";

 // echos 4, and $matches[0] will contain array('99','99','1','98');
 echo preg_match_all("/\d+/", $my_string, $matches); 

对于简单的子串,使用迈克尔建议的substr_count() - 如果你想要不区分大小写只是strtolower()两个参数。