web-dev-qa-db-fra.com

Comment vérifier si une chaîne est une URL valide

WordPress fournit une fonction utile appelée is_email() qui vérifie si une adresse email donnée est valide. Existe-t-il une fonction similaire disponible pour vérifier si une URL est valide?

J'ai essayé is_url() mais c'était un voeu pieux de ma part.

Réf: http://codex.wordpress.org/Function_Reference/is_email

7
henrywright

Utiliser la fonction php native Validateur de filtres

if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) {
    die('Not a valid URL');
}
9
shanebp

Je sais que ceci est un ancien message, mais pour tous les visiteurs, il convient également de considérer les WP fonctions esc_url() et esc_url_raw() , ce dernier étant sans danger pour les entrées de base de données, etc. encoder des entités. esc_url() encode des entités et est donc bon pour l'affichage aux utilisateurs.

Dans le source vous pouvez voir que esc_url() vérifie la liste blanche des protocoles et de la structure autorisés et évite ainsi certaines des vulnérabilités de FILTER_VALIDATE_URL signalées par le lien créé par @tobltobs.

6
orionrush

J'ai trouvé wp_http_validate_url plutôt pratique pour vérifier si une chaîne est une URL valide ou non tout en travaillant sur mon projet.

Prenez une référence à partir d’ici: https://developer.wordpress.org/reference/functions/wp_http_validate_url/

Par exemple:

$val = 'http://somevalidurl.com';
if ( wp_http_validate_url( $val ) ) {

    // It's valid URL;

} else {

    // It's NOT valid URL;

}

Il renvoie l'URL elle-même si elle est valide, sinon false.

2
Ashish Shrestha

Pour garantir que l'URL soumise par l'utilisateur est valide et sûre pour stocker et afficher ultérieurement, je suggère

esc_url_raw($url) === $url

esc_url_raw(), comme @orionrush mentionné ci-dessus, nettoie l'URL en supprimant tout élément non valide ou malveillant. Donc, si la chaîne n'a rien d'invalide ou de malveillant, c'est ok.

Par exemple

if( esc_url_raw($url) === $url ) {
   // URL is valid. Use it...
} else {
   // URL is invalid or malicious. Don't use it...
}

J'ai écrit un article de blog plus long à ce sujet ici: https://cmljnelson.wordpress.com/2018/08/31/url-validation-in-wordpress/

0
thespacecamel