к примеру
есть домен:
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Исправил с тайтлом. Там 1 условие избыточно, но там уже сам
$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);