[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парсинг и добавление парам. к ссылке по условию
jetistyum
Столкнулся с задачей - добавить параметр (target="_blank")к тегу <a если ссылка ведёт на на домен, на котором публикуется ссылка...


к примеру

есть домен:
site.ru

на страничке публикуется куча ссылок

<a href="http://site.ru/1" title="dadas">dadas</a>
<a
href="http://site.ru/21" title="babas">babas</a>
<a
href="http://othersite.ru/3" title="cacas">cacas</a>
<a
href="http://othersite.ru/4" >dadsad</a>


после парсинга ко всем внешним ссылкам дожен добавиться параметр
target="_blank"
тоесть


<a href="http://site.ru/1" title="dadas">dadas</a>
<a
href="http://site.ru/21" title="babas">babas</a>
<a
href="http://othersite.ru/3" title="cacas" target="_blank">cacas</a>
<a
href="http://othersite.ru/4" target="_blank">dadsad</a>


как сделать такой поиск и замену в один проход ? preg_replace

т.к. у меня вариант только

1. -вычленение домена
2. сравнение с текущим,
3. если не совпадает - замена








Спустя 14 часов, 17 минут, 33 секунды (13.08.2010 - 08:09) linker написал(а):
Ну при формировании ссылок и проверяй и подставляй.

Спустя 1 день, 1 час, 26 минут, 57 секунд (14.08.2010 - 09:35) jetistyum написал(а):
я не зря сказал что нужно парсить, а не подставлять при формировании...

Спустя 10 минут, 31 секунда (14.08.2010 - 09:46) DedMorozzz написал(а):
Смотри. Если домен заранее известен, тогда так:
preg_replace('#(<a href="http://(?!site.ru).*?" title=".*?")(>.*?</a>)#', '$1 target="_blank" $2', $text);

Пробуй такой варинат. Он будет рабочий, но как обычно какую-то мелочь подправить.

Спустя 8 минут, 2 секунды (14.08.2010 - 09:54) DedMorozzz написал(а):
От держи рабочюю версию:
<?php
$a='<a href="http://site.ru/1" title="dadas">dadas</a>
<a href="http://site.ru/21" title="babas">babas</a>
<a href="http://othersite.ru/3" title="cacas">cacas</a>
<a href="http://othersite.ru/4" >dadsad</a>'
;
$a = preg_replace('#(<a href="http://(?!site.ru).*?" .*?)(>.*?</a>)#', '$1 target="_blank" $2', $a);
echo htmlspecialchars($a);
Исправил с тайтлом. Там 1 условие избыточно, но там уже сам wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.