Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Замена слов синонимами
 
 автор: rafonets   (05.08.2011 в 10:04)   письмо автору
 
 

Доброе утро, в базе СУБД есть таблица '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);
Еще запрос какой должен быть к БД ?

  Ответить  
 
 автор: Valick   (05.08.2011 в 10:19)   письмо автору
 
   для: rafonets   (05.08.2011 в 10:04)
 

1) не надо ничего эксплодить... в одном поле держать несколько значений это признак дурного тона при проектировании БД и как следствие большой геморрой.
2) опишите ситуацию при которой вам понадобился такой алгоритм

[поправлено модератором]

  Ответить  
 
 автор: rafonets   (05.08.2011 в 10:33)   письмо автору
 
   для: Valick   (05.08.2011 в 10:19)
 

Благодарю но все таки, базу не я проектировал, а в ней 18 149 полей, и редактировать их всех почти не возможно и требуется больше времени, чем написать скрипт
буду благодарен, если поможете.
P.S. база скопирована с другого сайта и скрипт работал и работает там просто код закодирован, и я ее не могу скопировать

  Ответить  
 
 автор: cheops   (05.08.2011 в 10:40)   письмо автору
 
   для: rafonets   (05.08.2011 в 10:33)
 

Собственно, если обертки вокруг базы не много, таблицу не сложно переконвертировать скриптом. Боюсь вам все-равно рано или поздно придется это делать по соображениям производительности. Но лучше действительно сначала решить проблему в рамках текущей таблицы, а потом уже оптимизировать код, если в этом вообще возникнет надобность.

  Ответить  
 
 автор: rafonets   (05.08.2011 в 10:44)   письмо автору
 
   для: Valick   (05.08.2011 в 10:19)
 

Повторное сообщение

  Ответить  
 
 автор: cheops   (05.08.2011 в 10:32)   письмо автору
 
   для: 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;
  }
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования