替换页面php中的内容

时间:2014-04-07 13:38:39

标签: php str-replace ob-start ob-get-contents

我有一些禁止的词,而不是存储在数据库中。

我需要做的是用授权的新词替换所有这些词。

我做了类似的事

//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;
}

我遇到的麻烦是它只替换一个禁止的单词,我希望它可以替换所有的单词。

任何帮助将不胜感激。

4 个答案:

答案 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);