使用Regex掩蔽单词中除第一个字母以外的所有字母

2022-03-22 00:00:00 regex php preg-replace

我正尝试在php中创建一个坏单词"过滤",它将分析该单词并与一组已知的坏单词进行匹配,但保留单词的第一个字母,并用星号替换睡觉。示例:

福会变成f* 拍摄将变为%s**

我唯一不知道的部分是如何保留字符串中的第一个字母,以及如何在保持字符串长度不变的情况下将其余字母替换为其他字母。

$string = preg_replace("/(". $word .")/i", "***", $string);

谢谢!


解决方案

$string = 'fook would become';
$word = 'fook';

$string = preg_replace("~". preg_quote($word, '~') ."~i", $word[0] . str_repeat('*', strlen($word) - 1), $string);

var_dump($string);

相关文章