私はこれまでにこのコードを持っています。そのコードの前にhttp://が付いているかどうかをチェックし、例えば "google.co.uk"その前にhttp://を追加します。入力された文字列がURLであることを徹底的にチェックしています
しかし、人々が「こんにちは」をつけると、その前にhttp://が追加され、URLとしてカウントされます。私は終わりに接尾辞があることを確認する何かが必要です。
function checkURL($url) {
if (empty($url))
{
return $url;
}
else {
if (preg_match('[a-z0-9-]i', $url)) {
return $url;
} else {
if (preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url)) {
return $url;
}
else {
$url = 'http://'.$url.'';
return $url;
}
}
そしてそれに一度、別の簡単なチェックが返される
。助けてください!
は、ユーザーがクエリ文字列にURLを入力するような状況を占めたことがありますか? –
いいえ、なぜそれは問題でしょうか? – HarryBeasant
という性質上、リンク参照は、検証しようとしている接尾辞であるTLD - .edu、.com、.orgなどで終わります。しかし、クエリーストリングはそのロジックにレンチを投げます。これは、URLがTLDで終わらないことを意味するためです。その結果、接尾辞を確認できますが、接尾辞はテキストの最後であってはなりません。あるいは、 "?"を使ってテキストを爆発させることもできます。デリミタとして使用し、ロジックを適用することができます。これでも動作するはずです –