Je me demande s'il s'agit d'un moyen approprié de vérifier si une chaîne ne contient rien d'autre qu'une URL:
if (stripos($string, 'http') == 0 && !preg_match('/\s/',$string)) {
do_something();
}
stripos () vérifie si la chaîne commence par "http"
preg_match () vérifie si la chaîne contient des espaces
Sinon, je suppose que la chaîne n'est rien d'autre qu'une adresse URL - mais cette hypothèse est-elle valable? Y a-t-il de meilleurs moyens d'y parvenir?
Utilisez filter_var()
if (filter_var($string, FILTER_VALIDATE_URL)) {
// you're good
}
Les filtres peuvent être encore plus raffinés. Voir le manuel pour plus d'informations.
Dans PHP, il existe un meilleur moyen de valider l'URL http://www.php.net/manual/en/function.filter-var.php
if(filter_var('http://example.com', FILTER_VALIDATE_URL)))
echo 'this is URL';
Pour valider de manière plus sécurisée les URL (et celles non "ascii"), vous pouvez
$string = idn_to_ascii($URL);
if(filter_var($string, FILTER_VALIDATE_URL) && checkdnsrr($string, "A")){
// you have a valid URL
}