我完全不知道如何做到这一点,因为我不是正则表达式专家。
但我想在长字符串中搜索和计算指定的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"
有没有内置功能可以做到这一点?
任何形式的帮助将不胜感激:)
答案 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()
两个参数。