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

Форум Регулярные Выражения

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

 

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

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

тема: Регулярка
 
 автор: VL   (23.11.2009 в 07:25)   письмо автору
 
 

Как заменить в тексте выражение
**текст** на <b>текст</b> (замена звезд на ** <b> и </b>)
//текст// на <i>текст</i>( заменя слешей на <i> и </i>)
И еще
[http:/url.com текст] на <a href='http://url.ru'>текст</a>

  Ответить  
 
 автор: cheops   (23.11.2009 в 12:52)   письмо автору
 
   для: VL   (23.11.2009 в 07:25)
 

Хм... вообще-то сложнова-то будет во всех случаях правильно осуществить замену заменить у вас начальный ** ничем не отличается от конечного **, в то время как тэги <b> и </b> отличаются. В этом случае вложенную конструкцию будет невозможно правильно разобрать.

PS Обязательно нужно использовать именно такую разметку?

  Ответить  
 
 автор: VL   (23.11.2009 в 14:12)   письмо автору
 
   для: cheops   (23.11.2009 в 12:52)
 

Дело в том . Что переношу старую БД под новую с модификациями.
И вот там стояли такие опции ** **
В том то и дело что не отличиются. Но они парные.
Как я понял алгоритм.
Найди текст что между ** и **
И потом заменить **найденный текст ** на <b>найденный текст</b>
Просто с регулярками еще не сталкивался.

  Ответить  
 
 автор: ....   (23.11.2009 в 15:37)
 
   для: VL   (23.11.2009 в 14:12)
 

что-то вроде
<?
$text
htmlspecialchars('Как заменить в тексте выражение
***текст
*текст*
*** на <b>текст</b> (замена звезд на ** <b> и </b>)
//текст// на <i>текст</i>( заменя слешей на <i> и </i>)
И еще 
[http:/urlcom текст] на <a href="http://urlru">текст</a>'
);

$re = array(
'#\*\*(.+?)\*\*#s'# **текст**
'#//(.+?)//#s'# //текст//
'#\[http:/([^\s"]+)\s+([^\]]+)\]#' # [http:/urlcom текст]
);
# [^\s"] можно просто \S, если htmlspecialchars() заменила "
# [^\]]+ и .*  если не должно быть <

$place = array(
'<b>$1</b>',
'<i>$1</i>',
'<a href="http://$1">$2</a>'
);

echo 
preg_replace($re$place$text);
?>

Но текст перед тем как сохранён с таким оформлением должен-бы не содержать каких-нибудь символов html-разметки. или нужна htmlspecialchars()

  Ответить  
 
 автор: ....   (23.11.2009 в 15:56)
 
   для: ....   (23.11.2009 в 15:37)
 

>каких-нибудь символов html-разметки

и лишних символов такой разметки
в строке
http://xxxx http://yyyyy пропадут слэши

  Ответить  
 
 автор: VL   (24.11.2009 в 02:21)   письмо автору
 
   для: ....   (23.11.2009 в 15:56)
 

Спасибо! попробуем.!

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

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