Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите исправить регулярку!!! есть рабочая надо чуток поправить..... 
:(
    Опции темы
Ivushka
Дата 24.8.2007, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 28.10.2005
Где: Москва

Репутация: нет
Всего: 2



Привет всем.

Помогите плиз с регулярками.....
Никак с ними не разберусь

есть такой кусок
Код

$v = str_replace("http://", "", $v);
$v = preg_replace('@{(/[^},]+),([^}]+)}@', '<a href="\\1">\\2</a>', $v);
preg_match_all('@{(&quot;.+&quot;|.+),([^}]+)}@', $v, $matches);


работает так при находжении в тексте такой строки
Код

{www.ya.ru, ya}

переделывает ее в нормальную ссылку типа
Код

<a href="www.ya.ru">ya</a>


только работает это все если в тексте есть только одна такая конструкция...
а надо чтобы все такие строки заменялись.

Помогите кто чем может!))
--------------------
Программист - это диагноз!
PM MAIL ICQ   Вверх
smartov
Дата 24.8.2007, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 4
Всего: 259



Код

<?php

//тестовая строка
$s = <<<END
Line 1
Look here: {http://ya.ru, ya}
Line 2
Or better here: {http://google.com, better then ya}
END;

//регулярка
echo preg_replace('/{(.*),(.*)}/', '<a href="\1">\2</a>', $s);

//одно но: запятые в тексте ссылок не использовать

?>


PM MAIL   Вверх
Ivushka
Дата 24.8.2007, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 28.10.2005
Где: Москва

Репутация: нет
Всего: 2



smartov, не получается....

строка такая
Код

Наиболее оптимальными считаем подшипники {www.podshipnik.ru/manufacturers/foreign/element_261.html, SNR} и японские подшипники {www.podshipnik.ru/manufacturers/foreign/element_313.html, KOYO}.


а регулярка выбирает от первой { до последней } 
получается ссылка
Код

<a href="www.podshipnik.ru/manufacturers/foreign/element_261.html, SNR} и японские подшипники {www.podshipnik.ru/manufacturers/foreign/element_313.html"> KOYO</a>


а нужны 2 ссылки!!
--------------------
Программист - это диагноз!
PM MAIL ICQ   Вверх
Black_leopard
Дата 24.8.2007, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Нужно использовать ленивые кванторы, т.е.

Код

echo preg_replace('/{(.*?),(.*?)}/', '<a href="\1">\2</a>', $s);


PM MAIL   Вверх
-=Ustas=-
Дата 24.8.2007, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 6
Всего: 69



Цитата(Black_leopard @  24.8.2007,  18:28 Найти цитируемый пост)
Нужно использовать ленивые кванторы

Может квантификаторы жадности smile Хотя какая разница, суть одна осталась.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
smartov
Дата 25.8.2007, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 4
Всего: 259



Ivushka, ааа.. smile да забыл что в одной строке быть могут. Жадность надо отключать, как подсказывают -=Ustas=- и Black_leopard
Можно так, как подсказал Black_leopard, а можно отключить жадность для всего выражения
Код

preg_replace('/{(.*),(.*)}/U', '<a href="\1">\2</a>', $s);

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.1738 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.