0

テキストのブロックを取得し、そこからすべての URL を解析して返す単純な正規表現を探しています。<a href>URL は基本的にタグに置き換えられるため、 などhttp://google.comになり<a href="http://google.com">http://google.com</a>ます。したがって、非常に徹底したり、あらゆる種類のクレイジーな URL スキームや英語以外の文字を許可したりする必要はないと思います。

これは私が思いついた正規表現です:

%http[s]?://[A-z0-9/\.\-_]+%i

http:// または https:// で始まり、その後に次の文字の少なくとも 1 つが続くすべての文字列に一致します: Az 0-9 、ドット、スラッシュ (/)、アンダースコア、ハイフン (-)、大文字と小文字を区別しない

それを改善することはできますか?

4

1 に答える 1

2

URLを検証するのではなく、テキストを解析してURLを見つけるだけなので、単純に%\bhttps?://\S+%i

<aそのような URL がタグ内にあることを確認する場合は、次のようにします。

%<a\s[^>]*\bhref=['"](https?://\S+)["']%i

URL 使用filter_var()関数を検証するには:

var_dump(filter_var($url, FILTER_VALIDATE_URL)); 
于 2012-08-21T16:16:05.940 に答える