Bonjour, je souhaite valider ces URL suivantes, ils passeraient donc tous avec ou sans partie HTTP / www, tant qu'il existe du TLD présent comme .com, .net, .org, etc..
valide Les URL devraient être: p> pour supporter de longues TLDS: p> pour supporter les tirets (-): p> aussi pour supporter les nombres dans les domaines: p> peut également permettre à IPS: p> (mais c'est extra!) p> Agitez également les tirets (-), j'ai oublié de mantion que =) p> J'ai trouvé de nombreuses fonctions qui valident l'une ou l'autre mais pas les deux en même temps.
Si quelqu'un connaît une bonne regex pour cela, veuillez partager. Merci pour votre aide. P> p>
4 Réponses :
Lorsque vous ignorez la partie de chemin et recherchez uniquement la partie de domaine, une règle simple serait si vous souhaitez prendre en charge le pays TLDS, vous devez également fournir une complète (actuelle ) Liste ou ajouter avec | .. code> à la partie TLD. p> Preg_match code> Vous devez envelopper entre certains délimiteurs P> $pattern = '/(?:https?:\/\/)?(?:[a-zA-Z0-9.-]+?\.(?:com|net|org|gov|edu|mil)|\d+\.\d+\.\d+\.\d+)/';
J'ai essayé cette règle avec Preg_Match et sa paupage des erreurs. Est-ce que je manque quelque chose? J'ai fait Preg_Match ($ motif, $ URL) et votre regex à l'intérieur des citations.
@Tux s'il vous plaît voir la réponse modifiée.
Ne pas utiliser une expression régulière. Tous les problèmes qui impliquent des chaînes doivent utiliser des regexes. P>
N'écrivez pas votre propre validateur d'URL. La validation de l'URL est un problème résolu et il existe un code existant déjà écrit, débogué et tester. En fait, il vient standard avec PHP. P>
Regardez la fonctionnalité de filtrage intégrée de PHP: http: //us2.php .NET / manuel / fr / book.filter.php p>
Pas tout à fait correct. URL Validator (filtre_var) échoue de manière miséreuse dans PHP et pourtant, nous n'avons pas un bon problème résolu pour cela. La règle de l'OP dit "Tant que le TLD est présent", donc regex est une solution acceptable.
Pour la validation de l'URL Solution parfaite.
La réponse ci-dessus a raison mais ne fonctionne pas sur tous les domaines tels que .Me, .it, .in p>
donc s'il vous plaît utile ci-dessous pour le match URL: P>
passer plusieurs points
Je pense que vous pouvez utiliser indicateurs pour filtre_vars code> .
pour permet de vérifier la partie de chemin et ne voulez pas vérifier Pour une partie du schéma, vous pouvez faire quelque chose comme ceci (Falg est un masque bitm): p> filtre_validate_url code > Il y a plusieurs drapeaux disponibles: p>
filtre_flag_scheme_requiked code> nécessite que l'URL contienne un schéma
partie. li>
filtre_flag_host_requiked code> nécessite que l'URL contient un hôte
partie. li>
filtre_flag_path_requiked code> nécessite que l'URL contient un chemin
partie. li>
filtre_flag_query_requiked code> nécessite l'URL de contenir une requête
chaîne. li>
ul> filtre_flag_scheme_requiked code> et filtre_flag_host_required code> utilisé par défaut. p>
Essayer de supprimer le drapeau du schéma de cette manière ne fonctionne pas.
@Amadan, bien regex partie :) Vous ne savez pas comment écrire un pour accéder à tous ces domaines.
filtre_validate_url code>?@CHARDLES, cela ne permet que http: // et www si vous ne tapez pas ceux dans, il ne passera pas.
@TUX, la documentation n'est pas d'accord, sauf si vous avez testé i> it.
Filtrer_validate_url échouera si vous ne fournissez pas le protocole, ne prend pas en charge les domaines internationalisés (uniquement ASCII) et d'autres protocoles tels que Mailto, SSH, etc.