我在php中有一系列禁止的单词。
使用此代码,我在字符串中用*替换禁止的单词:
foreach ($wordlist as $word)
if (stripos($str, $word) !== false)
$str = str_ireplace($word, str_repeat('-*', strlen($word)), $str);
return $str;
问题是有些用户在单词中添加空格,因此代码找不到它们。
例:
禁止的词:apple
如果我写苹果被替换为*****
如果我写的没有被替换
有没有办法使用str_ireplace
忽略空格?
答案 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))