拆分字符串,过滤单词
程序员文章站
2022-07-12 18:55:02
...
拆分字符串,获取单词,或者过滤掉某些单词,简单的我们可以用 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 '<br>';
$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 '<br>';
print_r($res);
// 打印结果
Array ( [0] => a [3] => أَنَّ [5] => mongo [6] => is [9] => إياهما [10] => 一个 [11] => test [12] => pipe )
Array ( [5] => mongo [9] => إياهما [10] => 一个 [12] => pipe )
阿拉伯语打印有点看不懂,不过已经实现了过滤字符串的效果。
上一篇: 敏感词过滤
下一篇: Java去除文本中的HTML标签