2012-02-07 2 views
0

私はウェブサイトアドレスの長いリストを持っています。しかし、私はそれらをフィルタリングし、部分 "abcd"を取得する必要があります。私のカット/ペースト/アルゴリズムでは、私は非常にランダムな形式のウェブサイトを扱うことがあり、大きなリストを扱うのは非常に時間がかかるのと同じです。ZendFramework - ウェブサイトから削除するTLDのすべてのリストを取得するには?

例:私は、UEのTOTは、フロントとテールをカットし、常に "ABCD" の真ん中の部分を取得することができますZend_Filterの

www.abcd.tld.tld.tld to abcd 
http://www.abcd.tld.tdl to abcd 
abcd.tld to abcd 
abcd.tld.tld to abcd 
http://abcd.tld to abcd 
http://abcd.tld.tld to abcd 

。または、これを行うことができるPHP組み込み関数がありますか?

+2

抽出する部分が完全にランダムに見えます。抽出する規則を明確にすることができます。 – Gordon

+0

はい、それは私が持っている問題です。私はDOTで分割しましたが、そのランダムな私は最終的なアルゴリズムとしてそれを置くことができないので。 – YumYumYum

+1

Hm、および 'http:// http.abcd.tld.tld'。 'http:// static.abcd.tld'。または 'http:// totalawesomerandomness.abcd.tld'? – Wrikken

答えて

1

PHPの基本的な文字列関数でこれを行うことができます。すべてのURLを文字列変数にロードしてから単純な操作を行います。str_replace

$old_urls; // load your urls into this variable 
$search = array('http://','https://','www.','.com','.net','.us','.org','.edu','.us'); // etc, add more tlds 
$new_urls = str_replace($search,'',$old_urls); 

これはあなたのために機能しますか?

+0

OK - その論理は問題ありません。しかし、他にも多くのサイトがあります.tld.tldがあります。あなたが言っているのは、それらのTLDをすべて集めてその配列を作ることです。 – YumYumYum

+1

確かに、コードの '$ search'配列を展開するには、配列に...、 '。tld'、 '。tld2''という要素を追加します。それは間違いなく、あなたが探しているものには、ダウンと汚れた解決策ですが、あなたが作業しているすべての.tldを配置した後にうまくいくはずです。 – Markus

1

preg_match('_https?://([a-z0-9-])\..*_i', $original_url, $matches);あなたはうまくいくはずです。 $matches[1]には、http(s)://の後の最初のセクションと、最初の.の前のセクションが含まれるようになりました。

関連する問題