0

現在、http:// と www を検出する preg_match があります。など..... しかし、文字列から domain.com または domain.co.uk を検出したい

文字列の例: 「どうですか、domain.com を調べてください」 そして、domain.com を検出したい

私が望むのは、この文字列から主要なドメインを検出することです。つまり、.com .co.uk .eu などのフォームから example.com example2.co.uk を検出し、それを処理するために true または false を返します。この場合、domain.com が見つかります。

ただし、次のようなものを検出したくありません。

「ねえ、私はこのサイトが大好きです」

これにより、これは明らかにピリオドからスペースを入力する際のエラーです!

正規表現をスクラッチする必要があるアイデアがあれば!

ありがとう、ステファン

4

2 に答える 2

2

彼らが非ラテン語の URL を導入した後、正規表現を使用して完全に機能するフィルターを取得することはほぼ不可能になります。したがって、これに正規表現を使用する価値さえないと思います。疑い parse_url() はまだそれをサポートしていますが、それを使用すると、他の誰かがラテン語以外の URL の問題を解決しなければならないことを意味します。これは常にボーナスです:)

http://au.php.net/parse_url

http://thenextweb.com/me/2010/05/06/monumental-day-internet-nonlatin-domain-names-live/

編集:わかりました、文字列から、このような単語に分割します


$array = explode(" ", $string);

for(int i = 0; i < count($array);i++)
{
  if(parse_url($array[i]) != false)
  {
    $url[] = $array[i];
  }
}

parse_url() はこのように使用されることは想定されていませんが、私が見る限り、URL フィルタリングを行うために PHP に組み込まれている他の関数はありません。

于 2010-05-09T15:33:18.773 に答える
1

提供されたドメイン ゾーンのリストに一致する正規表現は次のとおりです。

[a-z0-9\-\.]+\.(com|co\.uk|net|org)
于 2010-05-09T15:54:04.580 に答える