使用str_replace PHP后使用explode

时间:2014-03-07 21:17:30

标签: php str-replace explode

我有一个非常简单的代码,用于替换字符串中的特定值,然后将其展开。

但我需要在爆炸后对字符串进行计数,这是我的例子

$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

似乎有些事情做错了,任何帮助都会受到赞赏。感谢

1 个答案:

答案 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 !== '';});