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