Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.07.2005, 21:46
Kadabra вне форума Посмотреть профиль Отправить личное сообщение для Kadabra Посетить домашнюю страницу Kadabra Найти все сообщения от Kadabra
  № 1  
Ответить с цитированием
Kadabra

Регистрация: Apr 2004
Адрес: Russia
Сообщений: 36
Отправить сообщение для Kadabra с помощью ICQ Отправить сообщение для Kadabra с помощью AIM Отправить сообщение для Kadabra с помощью Yahoo
По умолчанию регулярные выражения

Здравствуйте !

начал изучать регулярные выражения в PHP и столкнулся с такой вот проблеммой:

Допустим есть Html страница. В ней находятся ссылки:
[1]<a href="Htxt1" title="Ttxt1" target="TGtxt1" style=STtxt1>
[2]<a title="Ttxt1" href="Htxt1" target="TGtxt1" style=STtxt1>
[3]<a href="Htxt1" title="Ttxt1" style=STtxt1 target="TGtxt1>
[4]<a target="TGtxt1" href="Htxt1" title="Ttxt1"" style=STtxt1>
[5]<a href="Htxt1">

и есть вот такое рег. выражение "[<a +target=([^>]+) +href=([^>]+) +title=([^>]+) +style=([^>]+)>]",
но оно подойдет только для 4-го варианта, как должно выглядеть выражение, которое позволит вывести информацию о всех выше описанных ссылках ??

конечно есть вариант выбрать сначала строки такого вида <a ...>, а затем по каждому атрибуту :
target=...
href=...
title=...
Но получается, что функция вызывается уже 4 раза

Заранее Огромное спасибо !!!
__________________
Увы! Лето пролетело, как один день: берег лесного озера, тихая музыка, красивая женщина... Жаль, что в этот день я был на работе!
Все хорошо но может быть лучше

Старый 07.07.2005, 01:45
mirian вне форума Посмотреть профиль Отправить личное сообщение для mirian Найти все сообщения от mirian
  № 2  
Ответить с цитированием
mirian

Регистрация: Jun 2001
Сообщений: 159
Если надо только "выдернуть" ссылку то имхо этот паттерн сойдет:

<a.+?href="(.*?)".*?>
в backreference будет ссылка.
Если надо менять ссылки то тогда сойдет вот этот скрипт:

Код:
$result = preg_replace('/<a(.+?)href="(.*?)"(.*?)>/', '<a\\1href="some text to replace"\\3>', $subject); 
//тоисть тут паттерн будет: <a(.+?)href="(.*?)"(.*?)>
Если новичок в Regex–e советую посетить http://www.regexbuddy.com/
Regexbuddy мне очень помогает в работе, просто великолепная прога.

Старый 07.07.2005, 10:57
Constantine вне форума Посмотреть профиль Отправить личное сообщение для Constantine Посетить домашнюю страницу Constantine Найти все сообщения от Constantine
  № 3  
Ответить с цитированием
Constantine
 
Аватар для Constantine

Регистрация: Jun 2000
Адрес: $_SERVER['REMOTE_ADDR']
Сообщений: 854
Хорошо, если все урлы в ковычках... Правда, конечная задача в чем, убрать все аттрибуты кроме href?
__________________
X

Старый 07.07.2005, 16:17
mirian вне форума Посмотреть профиль Отправить личное сообщение для mirian Найти все сообщения от mirian
  № 4  
Ответить с цитированием
mirian

Регистрация: Jun 2001
Сообщений: 159
Ковычки можно обойти так: "?, тоисть получится:
<a.+?href="?(.*?)"?.*?>

или даже так:["']?
<a.+?href=["']?(.*?)['"]?.*?>


Последний раз редактировалось mirian; 07.07.2005 в 16:21.
Старый 07.07.2005, 22:45
Kadabra вне форума Посмотреть профиль Отправить личное сообщение для Kadabra Посетить домашнюю страницу Kadabra Найти все сообщения от Kadabra
  № 5  
Ответить с цитированием
Kadabra

Регистрация: Apr 2004
Адрес: Russia
Сообщений: 36
Отправить сообщение для Kadabra с помощью ICQ Отправить сообщение для Kadabra с помощью AIM Отправить сообщение для Kadabra с помощью Yahoo
Цитата:
Сообщение от mirian
Если надо только "выдернуть" ссылку то имхо этот паттерн сойдет:

<a.+?href="(.*?)".*?>
в backreference будет ссылка.
Если надо менять ссылки то тогда сойдет вот этот скрипт:

Код:
$result = preg_replace('/<a(.+?)href="(.*?)"(.*?)>/', '<a\\1href="some text to replace"\\3>', $subject); 
//тоисть тут паттерн будет: <a(.+?)href="(.*?)"(.*?)>
Если новичок в Regex–e советую посетить http://www.regexbuddy.com/
Regexbuddy мне очень помогает в работе, просто великолепная прога.
огромное спасибо за ваше внимание !

и еще нашел в инете одно выраженице и переделал под себя

"'<a +(.*?) *?>'i
"/href[^=]*=[ \n\r\t]*([^ >\r\n\t#]+)/i"

выдает линки с ковычками конечно, можно сделать и без них, ну я их потом обрезаю обработчиком строк.....
__________________
Увы! Лето пролетело, как один день: берег лесного озера, тихая музыка, красивая женщина... Жаль, что в этот день я был на работе!
Все хорошо но может быть лучше

Старый 07.07.2005, 23:22
mirian вне форума Посмотреть профиль Отправить личное сообщение для mirian Найти все сообщения от mirian
  № 6  
Ответить с цитированием
mirian

Регистрация: Jun 2001
Сообщений: 159
Всегда рад помочь
Вот еще линк в добавок, очень полезная библиотека:
http://www.regexlib.com/

Создать новую тему Ответ Часовой пояс GMT +4, время: 21:25.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:25.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.