忽略whitespace str_replace PHP

时间:2016-05-24 15:59:47

标签: php

我在php中有一系列禁止的单词。

使用此代码,我在字符串中用*替换禁止的单词:

foreach ($wordlist as $word)
if (stripos($str, $word) !== false)
$str = str_ireplace($word, str_repeat('-*', strlen($word)), $str);
return $str;

问题是有些用户在单词中添加空格,因此代码找不到它们。

例:
禁止的词:apple
如果我写苹果被替换为*****
如果我写的没有被替换

有没有办法使用str_ireplace忽略空格?

1 个答案:

答案 0 :(得分:0)

这就是我可能会做的事情:

foreach ($wordlist as $word) {
     //Convert each word to a regex which matches containing spaces (e.g. apple => a\s*p\s*p\s*l\s*e)
     $regexWord = implode("\s*?",str_split($word)); 
     $str = preg_replace("/".$regexWord."/",str_repeat('-*', strlen($word)), $str);

}

这个想法是将每个单词转换成与该单词匹配的正则表达式,即使它包含空格。这可能是也可能不是一个好主意,但这似乎是你需要实现的。

您可以使用implode("[list characters]*",str_split($word))

控制单词之间的字符