|
|
|
| Доброе утро, в базе СУБД есть таблица 'syns', В ней два поля первое word, второе syns
Надо, чтобы в тексте искало слова с поля word и заменяла и из поля syns, вот пример, как могут выглядеть слова
Word || syns
-----------------------------------------------------------------------------------------------
Адвокат || стряпчий, защитник, поверенный, ходатай, защитник
адепт || ученик
еще надо, чтобы слова из syns explode-лись, потом count-ировались, дальше rand-омились т.е.
explode($row['syns'] , ",");
$count = count($row['syns']);
$word = array( ); (Вот тут?)
$syns = array( ); (Вот тут?)
$text = str_replace($word, $syns, $text);
Еще запрос какой должен быть к БД ?
|
| |
|
|
|
|
|
|
|
для: rafonets
(05.08.2011 в 10:04)
| | 1) не надо ничего эксплодить... в одном поле держать несколько значений это признак дурного тона при проектировании БД и как следствие большой геморрой.
2) опишите ситуацию при которой вам понадобился такой алгоритм
[поправлено модератором] | |
|
|
|
|
|
|
|
для: Valick
(05.08.2011 в 10:19)
| | Благодарю но все таки, базу не я проектировал, а в ней 18 149 полей, и редактировать их всех почти не возможно и требуется больше времени, чем написать скрипт
буду благодарен, если поможете.
P.S. база скопирована с другого сайта и скрипт работал и работает там просто код закодирован, и я ее не могу скопировать | |
|
|
|
|
|
|
|
для: rafonets
(05.08.2011 в 10:33)
| | Собственно, если обертки вокруг базы не много, таблицу не сложно переконвертировать скриптом. Боюсь вам все-равно рано или поздно придется это делать по соображениям производительности. Но лучше действительно сначала решить проблему в рамках текущей таблицы, а потом уже оптимизировать код, если в этом вообще возникнет надобность. | |
|
|
|
|
|
|
|
для: Valick
(05.08.2011 в 10:19)
| | Повторное сообщение | |
|
|
|
|
|
|
|
для: rafonets
(05.08.2011 в 10:04)
| | Лучше начать с создания функции, которая будет принимать ключевое слово, а на выходе выдавать одно из значений. Можно начать отталкиваться от следующего скрипта
<?php
function repl($find)
{
$find = mysql_escape_string($find);
$query = "SELECT * FROM syns
WHERE Word = '$find'
LIMIT 1";
$res = mysql_query($query);
if(!$res) exit("Ошибка извлечения данных - ".mysql_error());
if(mysql_num_rows($res))
{
$row = mysql_fetch_array($res);
$arr = explode(",", $row['syns']);
if(is_array($arr))
{
return array_rand($arr);
} else return $find;
} else return $find;
}
?>
|
| |
|
|
|