Как найти и заменить слово в тексте из базы данных MySQL? - PullRequest
0 голосов
/ 28 января 2011

A имеет предложение:

«Как найти и заменить слово в тексте из базы данных mysql?»

И в таблице MySQL слова, с 3 столбцами id, word и replaceWord.У меня более 4000 слов в базе данных.

Таблица:

id     word     replaceWord
 1     text     sentence
 2     word     letter
 3     mysql    MySQL
 4     ..       ...
 5     ..       ...
 6     ..       ...

Результат:

"Как найти и заменить буква в предложение из MySQL база данных? "

Я знаю, как это сделать без базы данных, но мне нужна база данных.

 <?php
$text="How to find and replace word in text from mysql database?";
$replaceWord=array(  "text" => "sentence", "word" => "letter", "mysql" => "MySQL");
echo strtr($tekst, $replaceWord);
?>

Ответы [ 4 ]

2 голосов
/ 28 января 2011
update YourTable, Words
    set YourTable.YourColumn = replace(YourTable.YourColumn, Words.word, Words.replaceWord)
1 голос
/ 28 января 2011
//load all replacements
$result = mysql_query("SELECT * FROM YourTableNameHere");
//replace all words
$words = array();
$replacewords =array();
while ($row = mysql_fetch_assoc($result)) {
    $words[] = $row['word'];
    $replacewords[] = $row['replaceword'];
}
$text = str_replace($words,$replacewords);

Если вам также нужно preg_replace: вы должны добавить столбец isPattern в свою таблицу, тогда вы можете сделать это:

//load all replacements
$result = mysql_query("SELECT * FROM YourTableNameHere");
//replace all words
$words = array();
$replacewords = array();
$preg_words = array();
$preg_replacewords = array();
while ($row = mysql_fetch_assoc($result)) {
    if(!$row['isPattern']){        
        $words[] = $row['word'];
        $replacewords[] = $row['replaceword'];
    }
    else{
        $preg_words[] = $row['word'];
        $preg_replacewords[] = $row['replaceword'];
    }
}
$text = str_replace($words,$replacewords);
$text = $preg_replace($preg_words,$preg_replacewords);
0 голосов
/ 28 января 2011

Вот ужасная идея с точки зрения масштабируемости: вы можете просто перебирать предложение слово за словом, и в каждом из них делать запрос о том, где слово существует в слове. Если он существует (возвращает данные), тогда замените его содержимым из replaceWord

РЕДАКТИРОВАТЬ : Не полностью основано на базе данных, но больше, чем ваша текущая версия.

0 голосов
/ 28 января 2011
select REPLACE(fieldOrString, SearchString, ReplaceString) from table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...