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. Это полезная функция для разработчиков и пользователей, которые работают с текстом на своих сайтах!
 
						