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

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

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

 

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

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

тема: Замена всех совпадений с маской.
 
 автор: Киналь   (13.01.2006 в 09:51)   письмо автору
 
 

Видимо, просто не знаю какой-то чудо-функции=)
Нужно заменить в тексте все совпадения с маской (то есть заменить псевдо-теги [ url ] на ссылки). Но вот проблема - eregi_replace заменяет только последнее совпадение. Как быть? Сначала, что ли, их все посчитать, а потом в цикле менять? Это ж скрипту работы на полчаса=) Как это правильнее сделать?

   
 
 автор: Евгений Петров   (13.01.2006 в 13:11)   письмо автору
 
   для: Киналь   (13.01.2006 в 09:51)
 

Почему последнее? Здесь вроде все заменяет:
<?
  $text 
"Текст [url] содержащий [url] множество [url] тегов [url]";
  echo 
eregi_replace("\[url\]","<a href=\"javascript: alert()\">url</a>",$text);
?>

   
 
 автор: Киналь   (13.01.2006 в 17:29)   письмо автору
 
   для: Евгений Петров   (13.01.2006 в 13:11)
 

Ну, может, я не понимаю чего... Вот:

<?php
$msg
="Yandex: [ url]http:/ya.ru[/url ] Google: [ url]http://google.ru[/url ]";
$msg eregi_replace("(.*)\\[url\\]([^\s]*)\\[/url\\](.*)","\\1<a target=_blanc href=\\2>\\2</a>\\3",$msg);

Выодит

Yandex: [ url]http:/ya.ru[/url ] Google: <a target=_blanc href=http://google.ru>http://google.ru</a>


ЗЫ В тегах пробелы везде, чтобы форумный движок не обрабатывал.

   
 
 автор: Boss   (13.01.2006 в 18:15)   письмо автору
 
   для: Киналь   (13.01.2006 в 17:29)
 


<?php 
$msg 
"Yandex: [ url]http://ya.ru[/url ] Google: [ url]http://google.ru[/url ]"
$msg str_replace("[ url]","<a href=",$msg); 
$msg str_replace("[/url ]"">GO!</a>"$msg);
echo 
$msg.'<br />';
?>


=))

   
 
 автор: Киналь   (13.01.2006 в 22:19)   письмо автору
 
   для: Boss   (13.01.2006 в 18:15)
 

Очень смешно...

   
 
 автор: Евгений Петров   (13.01.2006 в 18:17)   письмо автору
 
   для: Киналь   (13.01.2006 в 17:29)
 

Ой! ой! ой! :)
<?
  $msg
="Yandex: [ url ]http:/ya.ru[ /url ] Google: [ url ]http://google.ru[ /url ]";
  echo 
$msg preg_replace("/(\[url\])(.*)(\[\/url\])/iU","<a href=\"\${2}\">\${2}</a>",$msg);
?>

   
 
 автор: Киналь   (13.01.2006 в 22:20)   письмо автору
 
   для: Евгений Петров   (13.01.2006 в 18:17)
 

Спасибо, попробую.

   
 
 автор: Киналь   (13.01.2006 в 22:50)   письмо автору
 
   для: Евгений Петров   (13.01.2006 в 18:17)
 

Все заработало, спасибо!

   
Rambler's Top100
вверх

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