URL-Validierung im Formularfeld

7

Ich habe das folgende Skript hinzugefügt, um die URL in meinem Formularfeld zu überprüfen. Es zeigt eine gültige URL an. Selbst wenn ich die Magento-Standardklasse validate-url verwende, wird kein Fehler angezeigt .

$url=https://www.google.co

if(!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$url))
{
  echo "invalid url";
}
else
{
   echo "valid url";
}

So beheben Sie dieses Problem.

saravanavelu
quelle
Ich bin etwas verwirrt darüber, was Sie hier erreichen wollen. Die URL ist gültig, soweit ich sehen kann, sodass sowohl die Datei validation.js als auch Ihr regulärer Ausdruck zurückgeben, dass sie gültig ist. Was ist das Problem, das Sie lösen möchten?
David Manners
Dies ist eine ungültige URL von www.google.co. aber es zeigt gültige URL. Gibt es irgendwelche Möglichkeiten in der obigen Methode.
Saravanavelu

Antworten:

3

Der von Ihnen gepostete Regex macht nicht wirklich das, was Sie denken. Wenn Sie dies in einem Regex-Tool wie dem folgenden veröffentlichen:

  1. http://www.regexr.com/
  2. http://regex101.com/

Dann können Sie Ihre Regex debuggen, aber im Grunde ist das, was Sie haben, eine Übereinstimmung für entweder http://oder www.so in Ihrem Fall www.google.coist vollkommen gültig.

Magento js/prototype/validation.jsbietet zwei verschiedene Optionen zur URL-Validierung.

  1. validate-url - erfordert entweder http: // https: // oder ftp: //
  2. validate-clean-url - was ohne das Protokoll funktioniert,

Damit Ihr Regex mit dem Protokoll funktioniert, können Sie Folgendes verwenden:

\b(?:(?:https?|ftp):\/\/(?:www\.)?)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]

Aber seien Sie gewarnt, dass dies auch passt, http://awas Sie wohl nicht wollen.

David Manners
quelle