strip_fragment_from_url() WP 4.4.0
Удаляет фрагмент (якорь, хэш, #fragment) из URL. URL должен быть передан с протоколом.
Когда, нужно просто удалить фрагмент #fragment
из строки (URL) без проверки есть протокол или нет, можно использовать один из таких кодов. К тому же, они раз в 5 быстрее
$link = 'page/sub-page#fragment'; // скорость на 50000 повторений echo strip_fragment_from_url($link); // 0.060 sec echo preg_replace('~#.*~', '', $link); // 0.014 sec echo str_replace('#fragment', '', $link ); // 0.010 sec echo substr($link, 0, strpos($link, '#') ); // 0.007 sec // каждая строка выведет на экран: // page/sub-page
1 раз — 0.000035 сек (очень быстро) | 50000 раз — 0.20 сек (очень быстро)
Хуков нет.
Возвращает
Строку. URL без хэша.
Использование
strip_fragment_from_url( $url );
- $url(строка) (обязательный)
- URL, фрагмент из которого нужно удалить.
Примеры
#1 Удалим хэш (фрагмент, якорь) из URL.
echo strip_fragment_from_url ( 'http://wp-kama.ru/foo#fooooo' ); // вернет: http://wp-kama.ru/foo echo strip_fragment_from_url ( 'http://wp-kama.ru/foo?foo=bar#fooooo' ); // вернет: http://wp-kama.ru/foo?foo=bar echo strip_fragment_from_url ( '/foo#fooooo' ); // не обработает и вернет как было: /foo#fooooo
Список изменений
С версии 4.4.0 | Введена. |
Код strip_fragment_from_url() strip fragment from url WP 5.6.2
function strip_fragment_from_url( $url ) {
$parsed_url = parse_url( $url );
if ( ! empty( $parsed_url['host'] ) ) {
// This mirrors code in redirect_canonical(). It does not handle every case.
$url = $parsed_url['scheme'] . '://' . $parsed_url['host'];
if ( ! empty( $parsed_url['port'] ) ) {
$url .= ':' . $parsed_url['port'];
}
if ( ! empty( $parsed_url['path'] ) ) {
$url .= $parsed_url['path'];
}
if ( ! empty( $parsed_url['query'] ) ) {
$url .= '?' . $parsed_url['query'];
}
}
return $url;
}