Функция strip_fragment_from_url()
предназначена для удаления фрагмента (или якоря), который начинается с символа #
, из переданного URL. Это полезно в ситуациях, когда необходимо получить чистый URL без дополнительных фрагментов, которые могут мешать обработке или отображению ссылки.
strip_fragment_from_url( string $url ): string
Параметры
- $url
- (string, обязательный) URL, из которого нужно удалить фрагмент.
Возвращаемое значение
Возвращает строку, представляющую URL без фрагмента.
Пример 1: Удаление фрагмента из URL
Когда необходимо удалить фрагмент из URL, можно использовать strip_fragment_from_url()
для быстрого и удобного удаления.
$url = 'http://example.com/page#section';
$clean_url = strip_fragment_from_url($url);
echo $clean_url;
// Вывод: http://example.com/page
Пример 2: URL с параметрами
Если URL содержит параметры, функция также корректно удалит фрагмент, оставив параметры нетронутыми.
$url_with_params = 'http://example.com/page?foo=bar#section';
$clean_url_with_params = strip_fragment_from_url($url_with_params);
echo $clean_url_with_params;
// Вывод: http://example.com/page?foo=bar
Пример 3: Отсутствие протокола
Если переданный URL не содержит протокола (например, http://
или https://
), функция не сможет удалить фрагмент и вернет оригинальный URL без изменений.
$local_url = '/page#fragment';
$result = strip_fragment_from_url($local_url);
echo $result;
// Вывод: /page#fragment
Пример 4: Тестирование производительности
Функция strip_fragment_from_url()
эффективна, но при необходимости можно использовать альтернативные подходы, такие как регулярные выражения или методы строки, для улучшения производительности в определенных случаях. Например:
$link = 'page/sub-page#fragment';
$time_strip_function = microtime(true);
strip_fragment_from_url($link);
echo 'strip_fragment_from_url: ' . (microtime(true) - $time_strip_function) . " sec\n";
$time_preg_replace = microtime(true);
preg_replace('~#.*~', '', $link);
echo 'preg_replace: ' . (microtime(true) - $time_preg_replace) . " sec\n";
$time_str_replace = microtime(true);
str_replace('#fragment', '', $link);
echo 'str_replace: ' . (microtime(true) - $time_str_replace) . " sec\n";
$time_substr = microtime(true);
substr($link, 0, strpos($link, '#'));
echo 'substr: ' . (microtime(true) - $time_substr) . " sec\n";
Каждая из этих альтернатив выведет на экран URL без фрагмента, но может работать быстрее в зависимости от контекста.
Заключение
Функция strip_fragment_from_url()
— это удобный и эффективный инструмент для очистки URL от фрагментов. Она позволяет разработчикам WordPress легко обрабатывать и формировать URL, избегая проблем, связанных с ненужными частями строки. Используя эту функцию, вы можете убедиться, что ваши URL будут чистыми и удобными для дальнейшей обработки.