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]   

> Без описания
SunChase
Отправлено: 18 Января, 2012 - 16:51:47
Post Id



Гость


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


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




Доброго времени суток. Появилась задачка в ХТМЛ коде выделить слова при помощи отдельного тега. Тоесть:

из:
CODE (html):
скопировать код в буфер обмена
  1. <div><p>Text text text<b>word</b></p></div>

сделать:
CODE (html):
скопировать код в буфер обмена
  1. <div><p><span alt='txt>Text</span> <span alt='txt>text</span> <span alt='txt>text</span><b><span alt='txt>word</span></b></p></div>


Для этого я решил попробовать использовать регулярные выражения, с которыми раньше не доводилось иметь дела. Подскажите пожалуйста, как это можно реализовать?

Заранее благодарен
 
 Top
LIME
Отправлено: 18 Января, 2012 - 17:11:28
Post Id


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


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


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




примерно так
PHP:
скопировать код в буфер обмена
  1. $text=preg_replace('#(\w)#','<span alt="txt">$1</span>',$text);
 
 Top
SunChase
Отправлено: 18 Января, 2012 - 17:35:03
Post Id



Гость


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


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




Эммм:

PHP:
скопировать код в буфер обмена
  1. $text = '<div><p>Text text text<b>word</b></p></div>';
  2.     $text=preg_replace('#(\w)#','<span alt="txt">$1</span>',$text);
  3.     echo $text;
  4.  


выводит:
CODE (html):
скопировать код в буфер обмена
  1. <div><p>Text text text<b>wordb>p>div>

(Добавление)
Написал чтото, что "хоть както" выполняет нужную мне задачу:

PHP:
скопировать код в буфер обмена
  1.  
  2. $text = '<div>Проверка текста <p>бла бла бла!!!</p></div>';
  3. $text .= '<div>Это <i>обычное</i> предложение</div>';
  4. $text .= '<ul><li>line1</li><li>line2</li></ul>';
  5. echo '<hr/>';
  6. $text = preg_replace('/(?:\>|\s)([[:graph:]]+)/','<b>${0}</b>',$text);
  7. echo $text;
  8.  

но наткнулся на проблему с выводом первого слова... а именно(результат работы, смотреть на первое сформированное слово):
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <div<b xmlns="http://www.w3.org/1999/xhtml">>Проверка<b> текста</b><b> </b><p><b>бла</b><b> бла</b><b> бла!!!</b></p><div><b>Это</b><b> <i>обычное</i></b><b> предложение</b></div><ul><li><b>line1</b></li><li><b>line2</b></li></ul>
  3.  


Подскажите, где я ошибся?
 
 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