Извлечение URL из текста с помощью функции wp_extract_urls()

WP_EXTRACT_URLS() │ WP 3.7.0

Функция wp_extract_urls позволяет извлекать URL из произвольного текста с помощью регулярных выражений. Это может быть полезно, если вам нужно получить ссылки из контента.

Использование функции

Функция wp_extract_urls используется, например, в функции do_enclose. Она эффективно работает даже при большом объеме данных, что делает её быстрой и надежной.

Возвращаемое значение

Функция возвращает массив строк — String[], содержащий все URL, найденные в переданном тексте.

Синтаксис

wp_extract_urls( $content );
  • $content (string, обязательный) — текст, из которого нужно извлечь URL.

Примеры использования

Пример 1: Извлечение URL из текста

Допустим, у нас есть следующий текст:

$content = 'Начало текста со ссылкой: http://wp-kama.com/
Продолжение, ссылка теперь будет в html ссылка.
И другой вариант, теперь путь будет ссылкой на изображение:
. На этом всё, пока достаточно.';

Вы можете использовать wp_extract_urls следующим образом:

$urls = wp_extract_urls( $content );

После выполнения кода в переменной $urls будет следующий массив:

Array
(
    [0] => http://wp-kama.com/
    [1] => http://wp-site.com/foo
    [2] => http://sitename.com/image.jpg
)

Пример 2: Не работает для URL локального хоста без TLD

Если вы пытаетесь извлечь ссылки с локального сервера, без TLD (например, .com), функция может не сработать. Пример:

$content = '
привет 
привет';

При использовании функции:

$urls = wp_extract_urls( $content );

Ваша переменная $urls будет содержать:

Array
(
    [0] => http://localhost.com:8889/?p=9
)

Обратите внимание, что функция работает с URL, у которых есть TLD.

Изменения в функции

  • С 3.7.0 — функция была введена.
  • С 6.0.0 — исправлена поддержка HTML-сущностей.

Код функции

Вот как выглядит исходный код функции wp_extract_urls:


function wp_extract_urls( $content ) {
preg_match_all(
"#(["']?)("
. '(?:([w-]+:)?//?)'
. '[^s()<>]+'
. '[.]'
. '(?:'
. '([wd]+)|'
. '(?:'
. "[^`!()[]{}:'".,<>«»“”‘’s]|"
. '(?:[:]d+)?/?'
. ')+'
. ')'
. ")1#",
$content,
$post_links
);

$post_links = array_unique(
    array_map(
        static function ( $link ) {
            // Декодируем, чтобы заменить действительные сущности, например &.
            $link = html_entity_decode( $link );
            // Сохраняем обратную совместимость, удаляя лишние точки с запятой (;).
            return str_replace( ';', '', $link );
        },
        $post_links[2]
    )
);

return array_values( $post_links );

}

С помощью этой функции вы можете легко извлекать ссылки из текстового контента в WordPress. Это полезная функция для разработчиков и пользователей, которые работают с текстом на своих сайтах!

Leave a Reply

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