1

フォーム フィールドが有効な URL であるかどうかを確認する必要があります (HTML5 を介して行うことができますが、まだすべてのブラウザーに対応しているわけではありません)。適切な URL チェッカー機能が見つかりません。不思議なことに、メール チェックには、すでに完了している機能がたくさんあります。

私はfilter_var()関数を見てきました (私はそれを発見したばかりです) が、私が読んだように、URL にはいくつかの問題があります。いくつかの正規表現を見つけることができますが、それらは完全なものではないようです。

良い URL チェッカー機能を知っていますか?

4

3 に答える 3

1

これは、URL 形式が非常に用途が広いためです。

Http// is optionnal
www is optionnal
.com, .net, .us, etc so many possible pattern
.html, /, .php, or nothing are possible ends

既製の関数を使用するのではなく、ほとんどのユーザーが URL を送信する方法、末尾などに応じて独自の関数を作成することをお勧めします ...

私の2セント。

于 2013-08-28T21:59:24.677 に答える
1

少し進んでみましょう:

<?php 
function validate_url($url) {
  return (bool)preg_match("
      /^                                                      # Start at the beginning of the text
      (?:ftp|https?|feed):\/\/                                # Look for ftp, http, https or feed schemes
      (?:                                                     # Userinfo (optional) which is typically
        (?:(?:[\w\.\-\+!$&'\(\)*\+,;=]|%[0-9a-f]{2})+:)*      # a username or a username and password
        (?:[\w\.\-\+%!$&'\(\)*\+,;=]|%[0-9a-f]{2})+@          # combination
      )?
      (?:
        (?:[a-z0-9\-\.]|%[0-9a-f]{2})+                        # A domain name or a IPv4 address
        |(?:\[(?:[0-9a-f]{0,4}:)*(?:[0-9a-f]{0,4})\])         # or a well formed IPv6 address
      )
      (?::[0-9]+)?                                            # Server port number (optional)
      (?:[\/|\?]
        (?:[\w#!:\.\?\+=&@$'~*,;\/\(\)\[\]\-]|%[0-9a-f]{2})   # The path and query (optional)
      *)?
    $/xi", $url);
}
?>

主に Drupal のvalid_url関数から。

使用例:

validate_url($url); // this will return TRUE if the URL is correct. Protocol should exist in $url
于 2013-08-28T22:08:58.117 に答える
0

または、別のアプローチを試してください。

で確認してみませんfile_get_contents($url)か?このようにして、URL が機能するかどうかもわかります。fread(fopen($url,'r'),100);巨大なファイルを挿入できないように、次のようなものを使用できると思い ます。localhostのようなものをチェックすることは、まだやりたいことがあります。

于 2013-08-28T22:39:15.933 に答える