文字列にURLしか含まれていない場合、これがチェックする適切な方法であるかどうか疑問に思っています:
if (stripos($string, 'http') == 0 && !preg_match('/\s/',$string)) {
do_something();
}
stripos()は、文字列が「http」で始まるかどうかをチェックします
preg_match()は、文字列にスペースが含まれているかどうかを確認します
そうでない場合、文字列はURL以外のものではないと想定しますが、その仮定は有効ですか?これを達成するためのより良い方法はありますか?
filter_var()
を使用します
if (filter_var($string, FILTER_VALIDATE_URL)) {
// you're good
}
フィルターをさらに洗練させることができます。 マニュアルを参照 詳細については.
PHP URLを検証するより良い方法があります http://www.php.net/manual/en/function.filter-var.php
if(filter_var('http://example.com', FILTER_VALIDATE_URL)))
echo 'this is URL';
URL(および「非ASCII」のURL)をより安全に検証するには、次のことができます。
$string = idn_to_ascii($URL); if(filter_var($string, FILTER_VALIDATE_URL) && checkdnsrr($string, "A")){ // you have a valid URL }