2010-10-04 20 views
1

J'ai cet argument en PHP et je veux que cela permette aux utilisateurs d'entrer un nom de domaine ... Je le veux pour qu'il ne permette pas des caractères comme "/" "?" et ainsi de suite ... donc je ne reçois que le nom de domaine tel que « http://somedomain.co.nz » ou « http://www.somedomain.co.nz »Comment faire un preg_match en php?

if(!preg_match('/^(http):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i',$_POST['story_url'])) 

peut-elle aider quelqu'un moi ajouter un moyen que je peux arrêter "/" ou "?" ou quoi que ce soit d'autre pour arrêter de venir sur le site ...

Merci

Roshan

Répondre

1

Son mieux d'utiliser la fonction parse_url pour cela.

if(parse_url(rtrim($POST['story_url'],'/'),PHP_URL_PATH) || 
      parse_url($POST['story_url'], PHP_URL_QUERY)) { 
     // invalid...URL has a path or a query string. 
} else { 
     // valid 
} 
+1

doit vérifier PHP_URL_QUERY trop pour éviter http://www.url.com/?query=foo – Vache

+0

Salut, merci pour une réponse rapide ... donc si j'utiliser ce lieu de match preg ... serait cela rend "www.somedomain.co.nz/" invalide? parce que je veux juste le preg_match pour rassembler la partie de nom de domaine seulement de lui et pas l'information après la barre oblique de fin ou le point d'interrogation ou les URLs dynamiques ... – Roy

+0

@Roy: J'ai mis à jour ma réponse. Il traite maintenant 'www.somedomain.co.nz /' comme valide. Mais s'il y a quelque chose qui suit le '/' c'est invalide. En outre, s'il y a une chaîne de requête dans l'URL, elle sera traitée comme invalide. – codaddict