WPSEO_Sitemaps_Renderer::encode_url_rfc3986
Apply some best effort conversion to comply with RFC3986.
Метод класса: WPSEO_Sitemaps_Renderer{}
Хуков нет.
Возвращает
Строку.
Использование
// protected - в коде основоного (родительского) или дочернего класса $result = $this->encode_url_rfc3986( $url );
- $url(строка) (обязательный)
- URL to encode.
Код WPSEO_Sitemaps_Renderer::encode_url_rfc3986() WPSEO Sitemaps Renderer::encode url rfc3986 Yoast 27.8
protected function encode_url_rfc3986( $url ) {
if ( filter_var( $url, FILTER_VALIDATE_URL ) ) {
return $url;
}
$path = wp_parse_url( $url, PHP_URL_PATH );
if ( ! empty( $path ) && $path !== '/' ) {
$encoded_path = explode( '/', $path );
// First decode the path, to prevent double encoding.
$encoded_path = array_map( 'rawurldecode', $encoded_path );
$encoded_path = array_map( 'rawurlencode', $encoded_path );
$encoded_path = implode( '/', $encoded_path );
$url = str_replace( $path, $encoded_path, $url );
}
$query = wp_parse_url( $url, PHP_URL_QUERY );
if ( ! empty( $query ) ) {
parse_str( $query, $parsed_query );
$parsed_query = http_build_query( $parsed_query, '', '&', PHP_QUERY_RFC3986 );
$url = str_replace( $query, $parsed_query, $url );
}
return $url;
}