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]   

> Без описания
dimka888
Отправлено: 17 Декабря, 2010 - 16:56:05
Post Id


Новичок


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


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




Задача, подсветка найденного слова в тексте каким нибудь цветом. Слова надо искать цельные, т.е. слово полностью, а не часть слова. Слово может быть отделено пробелом, запятой, точкой.

PHP:
скопировать код в буфер обмена
  1.  
  2. $str = trim('регулярное');
  3. $text = ' привет привет привет у меня не получается сделать регулярное регулярное выражение выражение привет привет привет ';
  4. $test = preg_replace('/([., ]{1})('.$str.')([ ,.!<]{1})/i', '$1<span>$2</span>$3', $text);
  5.  
  6. echo $test;
  7.  


Заменяет слова через одно, если они повторяются. В чем моя ошибка?

(Отредактировано автором: 17 Декабря, 2010 - 16:57:22)

 
 Top
trot
Отправлено: 17 Декабря, 2010 - 17:27:07
Post Id


Новичок


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


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




Пробел после слова захватвается, поэтому после совпадение следующий поиск начинается не с пробела перед словом, а с первой буквы слова. Попробуй использовать метасимволы обозначающие границы слова.
 
 Top
Мелкий Супермодератор
Отправлено: 17 Декабря, 2010 - 17:32:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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





?


-----
PostgreSQL DBA
 
 Top
dimka888
Отправлено: 18 Декабря, 2010 - 18:59:19
Post Id


Новичок


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


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




Спасибо, нашел решение для своей проблемы
 
 Top
dima4321
Отправлено: 27 Декабря, 2010 - 16:38:21
Post Id


Новичок


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


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




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.   ini_set('display_errors',1);
  3.   error_reporting(E_ALL);
  4.  
  5.  
  6. $m=' привет, привет, привет у меня не получается сделать регулярное регулярное выражение
  7. выражение привет привет привет ';
  8.    
  9. $poisk='/([^\s,\.]+)[.,]?[\s]/si';
  10.  
  11.  
  12. $new=preg_match_all($poisk,$m,$matches);
  13.  
  14. $i=0;
  15.  while($i<20) // поставил от болды 20. Надо применить строковую функцию. чтобы узнать кол-во слов изначально
  16.  
  17. {
  18.  
  19. echo "<span>";
  20. echo $matches[1][$i];
  21. echo "</span>";
  22. echo "<br>";
  23.  
  24. $i++;
  25.  
  26. }
  27. ?>
 
 Top
dima4321
Отправлено: 27 Декабря, 2010 - 19:53:37
Post Id


Новичок


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


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




C автоматическим подсчетом вхождений.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.   ini_set('display_errors',1);
  3.   error_reporting(E_ALL);
  4.  
  5.  
  6. $m=' привет , привет , привет   у меня не   получается сделать регулярное регулярное выражение
  7. выражение привет привет привет ';
  8.  
  9. $m=trim($m);
  10.  
  11. $keywords = preg_split("/[\s,]+/", $m );
  12. $count=count($keywords);
  13.  
  14.    
  15. $poisk='/([^\s,\.]+)[.,]?[\s]*/si';
  16.  
  17.  
  18. $new=preg_match_all($poisk,$m,$matches);
  19.  
  20. $i=0;
  21.  while($i<$count) // меньше чем элементов массива
  22. {
  23. echo "<span>";
  24. echo $matches[1][$i];
  25. echo "</span color: 'red'>";
  26. echo "<br>";
  27.  
  28. $i++;
  29. }
  30.  
  31.   ?>

(Отредактировано автором: 27 Декабря, 2010 - 19:54:39)

 
 Top
JustUserR
Отправлено: 27 Декабря, 2010 - 20:31:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




dima4321 В качестве дополнительного решения позволяющего осуществить поиск и выделение вхождение отдельных слов в предоставляемой строке - возможно использование последовательных функций поиска типа strpos с указанием позиции сдвига с первичного вхождения элемента


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB