WPSEO_Utils::sanitize_url()
Sanitize a url for saving to the database. Not to be confused with the old native WP function.
Метод класса: WPSEO_Utils{}
Хуков нет.
Возвращает
Строку
.
Использование
$result = WPSEO_Utils::sanitize_url( $value, $allowed_protocols, fooo ] );
- $value(строка) (обязательный)
- String URL value to sanitize.
- $allowed_protocols(массив)
- Optional set of allowed protocols.
По умолчанию: [ foo - fooo ] (обязательный)
- -
Список изменений
С версии 1.8.0 | Введена. |
Код WPSEO_Utils::sanitize_url() WPSEO Utils::sanitize url Yoast 24.9
public static function sanitize_url( $value, $allowed_protocols = [ 'http', 'https' ] ) { $url = ''; $parts = wp_parse_url( $value ); if ( isset( $parts['scheme'], $parts['host'] ) ) { $url = $parts['scheme'] . '://'; if ( isset( $parts['user'] ) ) { $url .= rawurlencode( $parts['user'] ); $url .= isset( $parts['pass'] ) ? ':' . rawurlencode( $parts['pass'] ) : ''; $url .= '@'; } $parts['host'] = preg_replace( '`[^a-z0-9-.:\[\]\\x80-\\xff]`', '', strtolower( $parts['host'] ) ); $url .= $parts['host'] . ( isset( $parts['port'] ) ? ':' . intval( $parts['port'] ) : '' ); } if ( isset( $parts['path'] ) && strpos( $parts['path'], '/' ) === 0 ) { $path = explode( '/', wp_strip_all_tags( $parts['path'] ) ); $path = self::sanitize_encoded_text_field( $path ); $url .= str_replace( '%40', '@', implode( '/', $path ) ); } if ( ! $url ) { return ''; } if ( isset( $parts['query'] ) ) { wp_parse_str( $parts['query'], $parsed_query ); $parsed_query = array_combine( self::sanitize_encoded_text_field( array_keys( $parsed_query ) ), self::sanitize_encoded_text_field( array_values( $parsed_query ) ) ); $url = add_query_arg( $parsed_query, $url ); } if ( isset( $parts['fragment'] ) ) { $url .= '#' . self::sanitize_encoded_text_field( $parts['fragment'] ); } if ( strpos( $url, '%' ) !== false ) { $url = preg_replace_callback( '`%[a-fA-F0-9]{2}`', static function ( $octects ) { return strtolower( $octects[0] ); }, $url ); } return esc_url_raw( $url, $allowed_protocols ); }