Заменить контент на странице php
У меня есть несколько запрещенных слов, которые хранятся в базе данных.
Вещи, которые мне нужно сделать, это заменить их все новыми разрешенными словами.
Я сделал что-то подобное
//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 ответа
Вы должны передавать значение $new в буфер после каждого str_replace, иначе вы получите только последнюю цензуру в конце
while ($censure = mysql_fetch_assoc($mots_interdits)):
$new = str_replace($censure['mot'], $censure['mot2'], $buffer);
$buffer = $new
endwhile;
Ваша функция str_replace использует $buffer в качестве входных данных, она не изменяет ее. Вы должны убедиться, что ваш цикл повторяет, что вы используете текущую, уже измененную строку в качестве входных данных для функции str_replace. Попробуйте что-то вроде этого:
$mots_interdits = censure();
while ($censure = mysql_fetch_assoc($mots_interdits)):
$buffer = str_replace($censure['mot'], $censure['mot2'], $buffer);
endwhile;
// На самом деле, contenu echo $buffer;
Вы также можете использовать массивы слов:
$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);
Используйте preg_replace() вместо str_replace(),
preg_replace($censure['mot'], $censure['mot2'], $buffer, 1);