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, фрагмент із якого потрібно видалити.

Приклади

0

#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() WP 6.0.2

function strip_fragment_from_url( $url ) {
	$parsed_url = wp_parse_url($url);

	if ( ! empty( $parsed_url['host'] ) ) {
		$url = '';

		if ( ! empty( $parsed_url['scheme'] ) ) {
			$url = $parsed_url['scheme'] . ':';
		}

		$url .= '//' . $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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *