我有一些禁止的词,而不是存储在数据库中。
我需要做的是用授权的新词替换所有这些词。
我做了类似的事
//Inclusion du fichier à parser
require_once GETCASH_BASE_PATH . '/GESTION/pages_html/index.phtml'; // Layout principal
//Récupération du contenu
$buffer = ob_get_clean();
//Modification du contenu
$mots_interdits = censure();
while ($censure = mysql_fetch_assoc($mots_interdits)):
$new = str_replace($censure['mot'], $censure['mot2'], $buffer);
endwhile;
//On affiche le nouveau contenu
echo $new;
该功能位于其他文件
中/**
* fonction qui requete la censure
* @return type
*/
function censure() {
$query = "SELECT `mot`, `mot2` FROM `censure`";
$result = mysql_query($query);
return $result;
}
我遇到的麻烦是它只替换一个禁止的单词,我希望它可以替换所有的单词。
任何帮助将不胜感激。
答案 0 :(得分:2)
你必须在每个str_replace后给缓冲区提供$ new值,否则你只会在最后获得最后一次审查
while ($censure = mysql_fetch_assoc($mots_interdits)):
$new = str_replace($censure['mot'], $censure['mot2'], $buffer);
$buffer = $new
endwhile;
答案 1 :(得分:1)
您也可以使用单词数组:
$phrase = "You should eat fruits, vegetables, and fiber every day.";
$healthy = array("fruits", "vegetables", "fiber");
$yummy = array("pizza", "beer", "ice cream");
$newphrase = str_replace($healthy, $yummy, $phrase);
答案 2 :(得分:1)
你的str_replace函数使用$ buffer作为输入,它不会修改它。您需要确保循环迭代时使用当前已修改的字符串作为str_replace函数的输入。尝试这样的事情:
$mots_interdits = censure();
while ($censure = mysql_fetch_assoc($mots_interdits)):
$buffer = str_replace($censure['mot'], $censure['mot2'], $buffer);
endwhile;
//在新生儿的斗争中 echo $ buffer;
答案 3 :(得分:-1)
使用preg_replace()而不是str_replace(),
preg_replace($censure['mot'], $censure['mot2'], $buffer, 1);