Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: замена слов в текст

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
xhugo
Отправлено: 29 Апреля, 2011 - 15:37:57
Post Id



Посетитель


Покинул форум
Сообщений всего: 357
Дата рег-ции: Дек. 2010  


Помог: 1 раз(а)




например, есть бд со словами
1|2
haha|blabla
joker|hoker
Fatal|offfffff

и например,
вводим текст в textarea
и скрипт должен проверить каждое слово в тексте, на совпадение в поле 1, если нашло совпадение то должно заменить слово 1 на слово 2 в тексте.

как можно реализовать?
 
 Top
Symphony
Отправлено: 29 Апреля, 2011 - 15:41:10
Post Id



Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




Вытащить эти слова из бд плюс регулярные выражения или функция str_replace() думаю подойдет.

(Отредактировано автором: 29 Апреля, 2011 - 15:45:29)



-----
Выделенный, Наклонный и http://www[dot]google[dot]com
 
 Top
xhugo
Отправлено: 29 Апреля, 2011 - 15:44:39
Post Id



Посетитель


Покинул форум
Сообщений всего: 357
Дата рег-ции: Дек. 2010  


Помог: 1 раз(а)




вытащить это понятно.
нужно как то найти каждое слово из бд поля 1 в текст и если нашло заменить в текст слова на 2
 
 Top
Symphony
Отправлено: 29 Апреля, 2011 - 15:49:01
Post Id



Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)






-----
Выделенный, Наклонный и http://www[dot]google[dot]com
 
 Top
xhugo
Отправлено: 29 Апреля, 2011 - 16:53:10
Post Id



Посетитель


Покинул форум
Сообщений всего: 357
Дата рег-ции: Дек. 2010  


Помог: 1 раз(а)




функция замены известна.
проблема в том что я незнаю как проверить каждое слово в текст(рассказ какой то например) на совпадение в бд
 
 Top
DlTA
Отправлено: 29 Апреля, 2011 - 17:07:15
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




preg_match_all
"/([A-Za-zА-Яа-яёЁйЙ]+)/mi"
foreach()
{
// проверяем каждый результат (кроме нулевого))) вбазе
// тот что нашли заменили в исходной строке
}
 
 Top
xhugo
Отправлено: 30 Апреля, 2011 - 07:00:32
Post Id



Посетитель


Покинул форум
Сообщений всего: 357
Дата рег-ции: Дек. 2010  


Помог: 1 раз(а)




ок. делаю.

PHP:
скопировать код в буфер обмена
  1.  
  2. /*---*/
  3. echo '<form action="" method="post"><textarea cols=60 rows=10 name=zxc></textarea><br><button>ok</button></form>';
  4. if(isset($_POST['zxc']))
  5. {
  6. $t=mysql_real_escape_string($_POST['zxc']);
  7. preg_match_all('/([A-Za-zА-Яа-яёЁйЙ]+)/mi',$t,$proxy);  
  8.   foreach($proxy[0] as $s)  
  9.   {
  10.  $query = mysql_query("SELECT * FROM `test` WHERE text1='$s'");
  11.   if ($result = @mysql_fetch_array($query))
  12.   {
  13.   $is=str_replace($s,"-----",$t);
  14.   }
  15.  
  16.    echo $is.'<hr>';
  17.   }
  18. }
  19. ?>

вот если нашло то слово которые есть в бд, заменяет слово в тексте на запись в бд 2
но как же это реализовать? замена на то которое находится в бд,под ид каком то?
 
 Top
Саныч
Отправлено: 30 Апреля, 2011 - 10:26:26
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




я так понял у вас в бд хранится примерно в таком виде
id | word1 | word2 |
1 | 1 | 2
2 | haha | blabla
3 | joker | hoker
4 | Fatal |offfffff
если так, то я предлагаю следущее
PHP:
скопировать код в буфер обмена
  1. $text = ''; //здесь ваш текст
  2. $w1 = $w2 = array();
  3. $sql = mysql_query('SELECT word1,word2 FROM table');
  4. while($res = mysql_fetch_assoc($sql))
  5. {
  6.    $w1[] = $res['word1'];
  7.    $w2[] = $res['word2'];
  8. }
  9. $text = str_ireplace($w1,$w2,$text);

это у вас что-то типа фильтрации "плохих" слов?

з.ы. по поводу предыдущего поста, вы представляете сколько у вас будет запросов к БД?!

(Отредактировано автором: 30 Апреля, 2011 - 10:28:37)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB