2

ユーザーからいくつかのURLを取得するためのフォームがあります。例:Webアドレス、Facebookアドレス、Twitterアドレス、Google +アドレスなど...私の問題は、フォームを送信するときにこれらのURLを検証する方法です。FILTER_VALIDATE_URLを使用するか、単純に正規表現を使用して、PHPでURLを検証しようとしました。

ここでは、ユーザーからそのようなURLを取得するための最良の方法を知りたいと思います。彼らにプロトコルを入力させることは常に良いことですか?http、https、ftp、ftpsなどであることがわからない場合もあります。一部のユーザーにとっては難しいことだと思います。

FILTER_VALIDATE_URLを使用してこのようなものを試しましたが、常にプロトコルを使用しており、その動作がわかりにくい場合があります。

// validate url
$url = 'http://www.example.com';

if (filter_var( $url, FILTER_VALIDATE_URL)){
    echo "<br>valid";
} else {
    echo "<br>invalid";
}

出力:有効

// validate url
$url = 'hp://www.example.com';

if (filter_var( $url, FILTER_VALIDATE_URL)){
    echo "<br>valid";
} else {
    echo "<br>invalid";
}

出力:有効

// validate url
$url = 'http://example.com';

if (filter_var( $url, FILTER_VALIDATE_URL)){
    echo "<br>valid";
} else {
    echo "<br>invalid";
}

出力:有効

// validate url
$url = 'http://example.com?id=32&name=kamalani';

if (filter_var( $url, FILTER_VALIDATE_URL)){
    echo "<br>valid";
} else {
    echo "<br>invalid";
}

OUTPUT : valid

ユーザーからURLを取得するための最良の方法と、それらを検証する方法を教えてください。

コメントは大歓迎です。

ありがとうございました。

4

1 に答える 1

0

ここで有効な URL を確認するには、正規表現を使用する必要があります。

これを試してください:

  $pattern = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
  $URL= 'http://example.com?id=32&name=kamalani';

  if(preg_match($pattern, $URL) ){
    echo "<br>valid";
  } else{
  echo "<br>invalid";
  }

出力

 valid
于 2013-01-15T05:57:47.990 に答える