2012-06-22 2 views
2

Можно создать дубликат:
Grabbing the href attribute of an A element
Parse All Links That Contain A Specific Word In "href" Tag Добавить _blank ко всем внешним ссылкам

Я использую следующую функцию, чтобы добавить _blank ко всем ссылкам на моем сайте.

function targetBlank($text) { 
    $return = str_replace('<a', '<a target="_blank"', $text); 
    return $return; 
} 

Я ищу решение для применения этой функции только к внешним ссылкам (а не к моему домену) вместо всех ссылок.

+2

Это не будет работать с тегом типа '', '', '
' и любые другие теги, начинающиеся с 'a' , – meagar

+0

Если вы хотите исправить ошибку , ..., выполните следующие действия: do return str_replace (' Riki137

ответ

5

Вот попытка решения, которая опирается на $_SERVER['HTTP_HOST']:

function targetBlank($text) { 
    if(strpos($text, $_SERVER['HTTP_HOST']) === false) 
     return str_replace('<a', '<a target="_blank"', $text); 
    return $text; 
} 

непроверенным, но он должен работать. @meager также правилен в том, что это приведет к созданию неверных привязанных тегов, если у этого тега уже установлен целевой объект, поскольку он будет работать только с строками html, которые вы передаете, тогда <abbr> и так далее должны быть безопасными, пока вы только передавать строки с привязными метками в них.

+0

Что делать, если уже есть целевой атрибут? Не будет ли регулярное выражение лучше? – transilvlad

+0

@tntu Правильно, на что я указал в ответе (~ 6 месяцев назад). –

Смежные вопросы