2013-05-10 7 views
6

私は、すべてのURLに一致するRegexを作成するのに助けが必要です。私は長い間必要なものを探していましたので、私の問題を解決する答えを見たことがあります。PHPの正規表現はすべてのURLに一致します

website.com

www.website.com

http://www.website.com

http://website.com

https://www.website.com

https://website.com

はまた、何が

をwww.website.com/path-to-something

末尾に、私は任意のURLを短縮何かをコーディングしていますが、そうするために、最初に私はそれらすべてに一致する必要があります。

おかげ

+2

これまでの取り組みは? – Rikesh

+0

Regexはまったく別の表現を試しましたが、Regexはまさに私の特技ではありません(http:// [^] +)。 –

+1

@Spudley: 'website.com'は有効なURLではなく、ユースケースは異なるので、そう思わないでください。 OPは一致するベースURLを検索します。 – Aquillo

答えて

14

この1試合あなたが投稿すべて正しく:

preg_match_all('#[[email protected]:%_\+.~\#?&//=]{2,256}\.[a-z]{2,4}\b(\/[[email protected]:%_\+.~\#?&//=]*)?#si', $targetString, $result); 
+0

お願いします...? – Aquillo

+0

私はそれにエラーが発生します:警告:preg_match():不明な修飾子 '{'私は何かにそれをラップする必要がありますか? –

+0

これはJSで動作します、私はそれを変換しようとします。 –

1

をあなたは、次のトリックを使用することができます

$url = "your URL" 
$validation = "/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i"; 
if((bool)preg_match($validation, $url) === false) 
echo 'Not a valid URL'; 

を、私はそれがあなたのために働くかもしれないと思います。

$string = 'www.blah.com'; 

$temp_string = (!preg_match('#^(ht|f)tps?://#', $string)) // check if protocol not present 
    ? 'http://' . $string // temporarily add one 
    : $string; // use current 

if (filter_var($temp_string, FILTER_VALIDATE_URL)) 
{ 
    echo 'is valid'; 
} else { 
    echo 'not valid'; 
} 

これは、URLの検証でPHPのビルドを使用しています。

4

あなたはこのようなものを使用します。最初にプロトコルが存在するかどうかを確認し、そうでない場合は、チェックする文字列に一時的に文字列を追加し、次に検証を実行します。これは、現在受け入れられている回答とは異なり、正確です。

+0

これはgooogle.comやwww.google.comなどと一致しますか? –

+0

はいhttp://viper-7.com/Jz7nR1とはいhttp://viper-7.com/Iv9SiS –

+0

上記のコードは、どちらかで始まらないという意味で無効なURLが見つかった場合http:// https:// ftp://またはftps://または一時的にhttp://を追加して完全なURLにして、PHPのURL検証機能に安全に渡すことができます。それ以外の場合は、既にそれが含まれている場合はそのまま検証機能に渡します。 –

1

正規表現を使用しないでください。あなたが望むことをするためのPHP関数があります。

http://php.net/manual/en/function.parse-url.php

+0

質問は、等価なリンクが有効かどうかではなく、同等の場所に行くかどうかをチェックできるようにURLを細分する方法を尋ねていますか否か。彼はホストが同じかどうか、パスが同じかどうかを確認したいと考えています。 – Danack

+0

実際には、無効なURLを短くします。google.comを使用するようなURLのようなものに一致します。技術的には無効ですが、それを修正してから短くしてください。Parse urlは必要なものではありません。答えを投稿していただきありがとうございます。とにかく –

+0

@Danack parse_url():_この関数は、指定されたURLを検証するためのものではなく、上記の部分に分割するだけです。 – Fredmat

関連する問題