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

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

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

 

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

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

тема: Как найти атрибут href и заменить путь ссылки
 
 автор: Anna   (15.05.2007 в 20:58)   письмо автору
 
 

Помогите вытащить из ссылок <a ... href ></a> путь ссылки. Все предложенные на форуме варианты ориентированны на "правильные" ссылки, т.е. после "a" сразу же указывают "href". В моем случае между ними еще целая куча атрибутов.
Пробовала шаблон (?<=<a)href=\".*?\"/im" - выдает все, что после "а"

   
 
 автор: Loki   (16.05.2007 в 10:19)   письмо автору
 
   для: Anna   (15.05.2007 в 20:58)
 


<a\s.*?href=\"([^"]*)\"

   
 
 автор: Trianon   (16.05.2007 в 10:53)   письмо автору
 
   для: Loki   (16.05.2007 в 10:19)
 

эдак мы дофига чего наменяем.
<a name='x'>X</a>
<tag href="y" />

   
 
 автор: Loki   (16.05.2007 в 14:33)   письмо автору
 
   для: Trianon   (16.05.2007 в 10:53)
 

Оба примера - мимо. Смотри регулярку внимательнее.

   
 
 автор: Trianon   (16.05.2007 в 16:12)   письмо автору
 
   для: Loki   (16.05.2007 в 14:33)
 

Это один пример.

   
 
 автор: Loki   (16.05.2007 в 16:18)   письмо автору
 
   для: Trianon   (16.05.2007 в 16:12)
 

ага. точно:)

<a\s[^>]*?href=\"([^"]*)\"

   
 
 автор: Trianon   (16.05.2007 в 16:23)   письмо автору
 
   для: Loki   (16.05.2007 в 16:18)
 

на самом деле еще нужно проверять, что href после пропуска, и допускать пропуски вокруг знака равенства.... и допускать отсутствие кавычек.. Паршивая это работа.
Как сейчас помню на пол-страницы кода в книге Дж.Фридла...
Я поэтому и не клюнул.

   
 
 автор: Loki   (16.05.2007 в 16:26)   письмо автору
 
   для: Trianon   (16.05.2007 в 16:23)
 

>и допускать отсутствие кавычек
не только отсутствие, но и разные типы... а еще их экранирование. Так что я с самого начала не претендовал на 100% вариант:)

   
 
 автор: Trianon   (16.05.2007 в 16:36)   письмо автору
 
   для: Loki   (16.05.2007 в 16:26)
 

насколько я помню, экранирование кавычек в атрибутах тегов - это что-то нестандартное. кавычки должны заменяться своими html-entity , т.е. &quot;

   
 
 автор: Loki   (16.05.2007 в 16:52)   письмо автору
 
   для: Trianon   (16.05.2007 в 16:36)
 

да... это я что-то хватил:)
но на самом деле, внутри кавычек вполне допускаются (броузерами) символы <>

   
 
 автор: EXP   (17.05.2007 в 00:12)   письмо автору
 
   для: Loki   (16.05.2007 в 16:52)
 

<?   
$zz 
'ok.php' ;
$str preg_replace("#(<a ((?!href=).)*?href=\"?\'?)([^ \"\'\>]+)(\"?\'?[^>]*>)#"'$1' $zz '$4'$str);

если делать шесть вопросов и десять скобок :)

   
Rambler's Top100
вверх

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