О web-разработке
и даже немного больше...

Парсинг текста и замена ссылок на гиперссылки

parsing-teksta-i-konvertirovanie-ssylok-v-giperssylkiДля начала давайте разберемся, в чем различие активной ссылки и неактивной. Представим, что мы размещаем простой текст, в котором есть ссылки, либо email адреса. Так как текст отображается в браузере, у нас появляется возможность оформить ссылку согласно синтаксису разметки HTML, после чего ссылка будет открывать ресурс при клике по ней. Иными словами в этом случае ссылка становится не просто строкой, а активной ссылкой, оформленной согласно синтаксису HTML. Именно это и определяет является ли ссылка активной либо нет.

На некоторых сайтах можно повстречать текст, в которых есть неактивные ссылки. Такие ссылки могут быть следствием отсутствия базовых навыков оформления ссылок у пользователей, которые размещают текст. Бывают и случаи когда их не оформляют специально, по ряду каких либо причин, но суть не в этом. Давайте рассмотрим пример, как можно найти все ссылки в тексте и сделать их активными. Для поиска ссылок и email адресов в тексте мы воспользуемся регулярными выражениями. Для удобства использования оформляем код в виде функции:

function parse_links($str)
{
    $str = str_replace('www.', 'http://www.', $str);
    $str = preg_replace('|http://([a-zA-Z0-9-./]+)|', '<a href="http://$1">$1</a>', $str);
    $str = preg_replace('/(([a-z0-9+_-]+)(.[a-z0-9+_-]+)*@([a-z0-9-]+.)+[a-z]{2,6})/', '<a href="mailto:$1">$1</a>', $str);
    return $str;
}

К функции обращаемся таким образом:

// наш исходный текст
$str = 'Блог о веб-разработке https://href.kz';

// обращаемся к функции
echo parse_links($str);

// На выходе получаем:
// Блог о веб-разработке <a href="https://href.kz">https://href.kz</a>';

Теперь о минусах данного примера. Нужно понимать, что чем больше у вас текст, тем дольше происходит его обработка, и нагрузка на процессор вашего сервера. Это означает, что ссылки следует преобразовывать ещё до момента записи текста в базу, т.е. конечным посетителям сайта текст должен показываться уже с преобразованными ссылками ещё на стадии его добавления.

Опубликован: 05.08.2015 г.

См. также:

Редакторы кода для PHP
Как просмотреть время загрузки страницы в PHP?
Генерация QR-кода в PHP
Загрузка файлов на сервер посредством Ajax
Импорт записей из Excel в WordPress
Парсинг XML в PHP
Установка IonCube на XAMPP
Создание PDF файлов в PHP

Комментарии

  1. Алекс пишет:

    Отлично!
    Только первой строчкой нужно добавить:
    str = str_replace('http://www', 'www', $str);

    Иначе к адресам http://www будет добавлять лишнее http

  2. nazarpunk пишет:

    $str = "simple test ";

    echo parse_links($str);
    И передайте привет вёрстке;

    echo htmlspecialchars(parse_links($str));

    и ссылки стали ещё красивее))

  3. nazarpunk пишет:

    парсер съел
    $str = simple test *здесь закрывающий див*;

    а здесь вложенные тэги bold, bold italic

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта