Наша совместная команда Banwar.org

Связаться с нами

  • (097) ?601-88-87
    (067) ?493-44-27
    (096) ?830-00-01

Статьи

Заміна зовнішніх посилань на внутрішні або як заховати посилання (Частина 2)

  1. Отже частина 2 - "Регулярні вирази"
  2. Тепер ми знаємо що шукати ...
  3. збираємо регулярку
  4. Розберемо по порядку (<a [az \ -_ \ s \ "\ # \ =] *)
  5. Регулярний вираз для пошуку активних посилань.
  6. код
  7. Як використовувати даний код:
  8. Розглянемо приклад:

Перша частина уроку: Редирект або як закрити зовнішні посилання від індексації .

Привіт, в першій частині уроку ми створили файл exit.php в якому зробили редирект, але щоб кожен раз в ручну не підставляти до заслання "exit.php? Url =" ми створимо регулярний вираз за допомогою якого автоматично знайдемо всі зовнішні посилання і замінимо їх на внутрішні.

Отже частина 2 - "Регулярні вирази"

Для початку треба визначитися, що будемо шукати за допомогою регулярки. А шукати будемо всі активні посилання починаються на HTTP: //, HTTPS: // або FTP: //. Корисні функції на PHP - активне посилання, по якій можна клікнути. Тепер давайте розберемо з чого складається html код такого посилання.

На малюнку видно що будь-яка активна посилання складається з тега <a і атрибута href = "", а інші атрибути, такі як: id, class, title і т.д використовуються не завжди, і можуть бути як перед атрибутом href = "", так і після нього.

Тепер ми знаємо що шукати ...

Наше завдання вказати регулярному виразу, щоб воно шукало: тег <a, потім будь-який текст з використанням символів (_ - = ") - цей текст може бути, а може і не бути, потім обов'язково шукаємо href =" (а тут треба знайти HTTP : //, HTTPS: // або FTP: //) і все. Тим самим ми будемо знати, що це активна зовнішня посилання.

збираємо регулярку

Знайдемо тег <a і те, що можеть бути до атрибута href = "" (class = "" id = "" і т.д).

Розберемо по порядку (<a [az \ -_ \ s \ "\ # \ =] *)

  1. () - все що знаходиться в круглих дужках - це група
  2. <A - тут ми говоримо про те, що потрібно шукати збіг символів <a
  3. [] - квадратні дужки говорять про діапазон, тобто [Abc] - буде означати або а, або b або з
  4. [A-z _ "\ - \ s \ =] * - рядок може містити символи в діапазоні від a до z, _, лапки, тире, знак одно і \ s - пробіл. А * зірочка після квадратних дужок говорить про те, що дані символи можуть зустрітися нуль і більше разів.

Потім шукаємо href = "

А після потрібно вказати, що протокол може бути: або HTTP або HTTPS або FTP.

Тут теж все просто, вказуємо в дужках (https | ftp). символ | - означає "або", тобто або https або ftp. А після букви s (http S) ставимо знак питання - це скаже про те, що буква S може бути 1 раз, або її може зовсім не бути. А після протоколу ставимо: //

Регулярний вираз для пошуку активних посилань.

Регулярний вираз для пошуку активних посилань

код

$ RegV = '# (<a [az \ -_ \ s \ "\ # \ =] *) (href =") ((https? | Ftp): //) #i';

Буква i в кінці регулярки говорить про те, що пошук буде регістронезавісімого, тобто рядок "АБВГД" нічим не буде відрізнятися від "абвгд".

Як використовувати даний код:

Використовувати ми його будемо з функцією preg_replace ().

У цієї функції є три параметра:

  1. Регулярний вираз
  2. На що міняємо
  3. Те що міняємо

Розглянемо приклад:

$ RegV = '# (<a [az \ -_ \ 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 - це групи, для позначення груп в регулярке, ми використовували круглі скобочки.

  • $ 1 - група №1 (<a [az \ -_ \ s \ "\ # \ =] *)
  • $ 2 - група №2 (href = ")
  • $ 3 - група №3 ((https? | Ftp): //)
  • $ 4 - група №4 (https? | Ftp) - вона знаходиться всередині третьої групи

На цьому я завершую даний урок, про те як створити сторінку exit.php. дивіться тут

Php?
Https?
Https?
Php?
Php?
Https?
Https?

Новости

Banwar.org
Наша совместная команда Banwar.org. Сайт казино "Пари Матч" теперь доступен для всех желающих, жаждущих волнения и азартных приключений.