拆分字符串,过滤单词

拆分字符串,获取单词,或者过滤掉某些单词,简单的我们可以用 str_replace ,如果是过滤掉某些单词或字符串我们可以用  str_word_count 函数,可以获取到拆分后的单词数组,然后再用 array_diff 或者 循环判断过滤掉不需要的字符串。

$filter = ['a', 'is', 'test'];  // 要过滤的字符串数组
$str = 'a mongo is إياهما 一个 test pipe';  // 需要过滤的字符串
$arr = str_word_count($str, 1);
print_r($arr);
echo '
'; $res = array_diff($arr, $filter); print_r($res); // 打印结果 Array ( [0] => a [1] => mongo [2] => is [3] => test [4] => pipe ) Array ( [1] => mongo [4] => pipe )

但是,我们发现 str_word_count 这个函数只对英文字符有用,我写的阿拉伯语并没有获取到,这时,就得换种方法,下面是我写的,如果有更好的方法,欢迎交流:

$filter = ['a', 'is', 'أَنَّ', 'test'];
$str = 'a   أَنَّ  mongo is   إياهما 一个 test pipe';
$str = str_replace(' ', '###', $str);  // 空格替换为 ###,方便拆分,也可以替换为其他字符
$str = str_replace(' ', '###', $str);  // 全角空格也替换
$arr = explode('###', $str);  // 拆分
$arr = array_filter($arr);  // 过滤元素为空的
$res = array_diff($arr, $filter);
print_r($arr);
echo '
'; print_r($res); // 打印结果 Array ( [0] => a [3] => أَنَّ [5] => mongo [6] => is [9] => إياهما [10] => 一个 [11] => test [12] => pipe ) Array ( [5] => mongo [9] => إياهما [10] => 一个 [12] => pipe )

阿拉伯语打印有点看不懂,不过已经实现了过滤字符串的效果。

你可能感兴趣的:(PHP,php,过滤字符串,过滤单词,过滤数组,过滤)