Все мы уже знаем, что выделение ссылок - достаточно удобная и важная вещь. Я считаю, что выделение внешних ссылок отдельно от внутренних тоже достойно внимания.
Раньше я писал о возможности выделения внешних ссылок посредством CSS3. Но оно имело ряд проблем и ограничений, связанных с тем, что не все браузеры поддерживают CSS3, а также с несовершенностью данного языка.
Теперь вы уже знаете что такое регулярные выражения и как ими пользоваться. Поэтому я предлагаю другой вариант выделения внешних ссылок путем использования небольшой функции, которая будет решать проблемы первого варианта выделения внешних ссылок.
function Select_External($content, $class = 'external'){ preg_match_all('/<a[^>]+href=["|\']([^\'"]+)["|\'][^>]*>(.+)<\/a>/i', $content, $find, PREG_SET_ORDER); foreach( $find as $link ) { $link[1] = parse_url($link[1]); if ( $link[1][host] && $link[1][host] !== $_SERVER[HTTP_HOST] ) { $newlink = ( preg_match('/<a[^>]+class=["|\']([^\'"]+)["|\'][^>]*>(.+)<\/a>/i', $link[0]) ) ? preg_replace('/<a([^>]+)class=("|\')([^\'"]+)("|\')([^>]*)>(.+)<\/a>/i', '<a\\1class=\\2\\3 ' . $class . '\\4\\5>\\6</a>', $link[0]) : preg_replace('/<a([^>]+)>(.+)<\/a>/i', '<a\\1class="' . $class . '">\\2</a>', $link[0]); $content = str_replace($link[0], $newlink, $content); } } return $content; }
Функция достаточно проста. Всё, что нужно, это задать название стиля, который будет использоваться для внешних ссылок. По умолчанию я задал стиль external
, но вы можете изменить его на свой.
Также эту функцию можно прицепить к любой CMS. В нашем случае, чтобы применить её к WordPress, необходимо вышеописанный код добавить в файл functions.php вашей темы. И добавить следующую строчку после данного кода:
add_filter('the_content', 'Select_External');
А о стилях оформления внешних ссылок я говорил, разбирая предыдущий способ. Только теперь можно сделать проще, добавив в файл стилей просто
.external { свойства-стиля }
Вот и всё. Желаю удачи и приятных выходных! 😉
Если вы хотите научиться программировать на web-языках, вам достаточно иметь компьютер, много терпения и желания. Сегодня покупка бу компьютеров обходится очень дешево, а по мощностям их достаточно для требуемых задач.
Недвижимость в Киеве купить несложно, потому как продажа квартир киев там распространена. При этом можно найти как бюджетный вариант, так и шикарные и просторные квартиры.
2 комментариев
Но ссылкам то не по умолчанию присваивается класс external — его руками вбивать надо.
Я так понял, в принципе если немного модифицировать ваш скрипт, можно фильтровать все ссылки и на каждую цеплять external, а потом на него и стиль..
Но это если надо на все, а не на особенные ссылки..
@ Yuriy, только к ссылкам из текста $content будет присвается класс $class, переменная которой содержит по умолчанию значение external. Ну если скрипт переделать, то естественно можно и всю страницу зацепить.