Заказать бесплатную консультацию
- Создание и продвижение сайтов
- Разработка Landing Page
- Контекстная реклама в Яндекс и Google
- 10 лет опыта
- 150+ выполненных проектов
- 10 лет гарантия
Первая часть урока: Редирект или как закрыть внешние ссылки от индексации.
Здравствуйте, в первой части урока мы создали файл exit.php в котором сделали редирект, но чтобы каждый раз в ручную не подставлять к ссылке "exit.php?url=" мы создадим регулярное выражение с помощью которого автоматически найдем все внешние ссылки и заменим их на внутренние.
Для начала надо определиться, что будем искать с помощью регулярки. А искать будем все активные ссылки начинающиеся на HTTP:// , HTTPS:// или FTP:// . Полезные функции на PHP - активная ссылка, по которой можно кликнуть. Теперь давайте разберем из чего состоит html код такой ссылки.
На рисунке видно что любая активная ссылка состоит из тэга <a и атрибута href="" , а остальные атрибуты, такие как: id, class, title и т.д используются не всегда, и могут быть как перед атрибутом href="", так и после него.
Наша задача указать регулярному выражению, чтобы оно искало: тег <a, затем любой текст с использованием символов (_ - = ") - этот текст может быть, а может и не быть, затем обязательно ищем href="(а тут надо найти HTTP:// , HTTPS:// или FTP://) и все. Тем самым мы будем знать, что это активная внешняя ссылка.
Найдем тег <a и то, что можеть быть до атрибута href="" (class="" id="" и т.д).
Затем ищем href="
А после нужно указать, что протокол может быть: либо HTTP либо HTTPS либо FTP.
Здесь тоже все просто, указываем в скобках (https | ftp). символ | - означает "либо", тоесть либо https либо ftp. А после буквы s (httpS) ставим знак вопроса - это скажет о том, что буква S может быть 1 раз, или её может совсем не быть. А после протокола ставим ://
$regV = '#(<a[a-z\-_\s\"\#\=]*)(href=")((https?|ftp)://)#i';
Буква i в конце регулярки говорит о том, что поиск будет регистронезависимым, т.е. строка "АбВгД" ничем не будет отличаться от "абвгд".
Использовать мы его будем с функцией preg_replace().
У данной функции есть три параметра:
$regV = '#(<a[a-z\-_\s\"\#\=]*)(href=")((https?|ftp)://)#i'; // регулярное выражение $replace = '$1$2exit.php?url=$3'; // то на что заменяем $text = 'Посмотрите пример <a href="http://www.makannikov.ru/blog.php">здесь</a>'; // текст (то что заменяем) // В переменную $text, вы подставляете свой текст в котором хотите заменить ссылки echo preg_replace($regV,$replace,$text); // Результатом выполнения данной функции будет: // Посмотрите пример здесь // Перед http мы подставили exit.php?url=
Объясняю что означает $1,$2 и $3 - это группы, для обозначения групп в регулярке, мы использовали круглые скобочки.
На этом я завершаю данный урок, о том как создать страницу exit.php. смотрите здесь
Метки: регулярные выражения, замена внешних ссылок, поиск активных ссылок в тексте,
Да, действительно теперь я не один. В моей команде работают несколько программистов, дизайнер и отличный SMM специалист.
Так что теперь мы оказываем абсолютно весь спектр услуг, связанный с организацией бизнеса в интернете. Начиная от создания сайта и заканчивая продвижением его в интернете.