我有一个非常简单的代码,用于替换字符串中的特定值,然后将其展开。
但我需要在爆炸后对字符串进行计数,这是我的例子
$exclude=array();
$exclude[0]="with";
$exclude[1]="on";
$search_string="Boy with a t-shirt walking on the road";
echo str_word_count($search_string);
//the str_replace is suppose to remove the word "with" and "on" from string
// count search string before explode
$sch2 = str_replace($exclude,"", trim($search_string));
$sch=explode(" ",trim($sch2));
echo count($sch);
//count search string after explode
//The result of the second count after exploding is suppose to be 6 and NOT 8
但是当我在爆炸后计算$ sch字符串时,它给了我8
似乎有些事情做错了,任何帮助都会受到赞赏。感谢
答案 0 :(得分:4)
如果您用'替换'什么都没有,那么你还有两个空格。因此,拆分仍然会返回8个项目,其中一个是空字符串,其中的单词“' with'以前是。
要解决此问题,您可以替换'with '
(包括空格`,因此您实际上也要替换这两个空格中的一个。但我不知道这是否适用于您的实际生产代码,当然。
您还可以使用[array_filter][1]
过滤掉空值,如下所示:
$sch2 = str_replace($exclude,"", trim($search_string));
$sch = explode(" ",trim($sch2));
$sch = array_filter($sch);
echo count($sch);
甚至:
// To prevent 'false positives' due to PHP's default weak comparison.
$sch = array_filter($sch, function($a){return $a !== '';});