2009-05-27 16 views
1

私は約8年前にPHPで書いたPerlベースのWebクローラーをPHPで書き直しています。PHP PerlのURI :: URLに相当します。

$sourceUrl = '/blah.html'; 
$baseHost = 'http://www.example.com'; 
my $url = URI::URL->new($sourceUrl, $baseHost); 
return $url->abs; 

リターン:「http://www.example.com/blah.html

PHPででもparse_url機能は非常に便利ですが、より堅牢なものがある私のような事をするperlでURLモジュール::非常に便利URIを使用しましたか?特に上記の機能を提供するものはありますか?

+1

上記の機能は、 "。"文字列連結演算子。たぶん、あなたが必要とするものを示すための最良のサンプルコードではなかったでしょうか。 –

答えて

1

Zend_Uriはお探しですか?

+0

は確かに有望ですが、それでもスマートでフレキシブルではないようです。 – pixel

0
print $baseHost . $sourceURL; 

私に何かが不足していますか?あなたのやり方は不必要に複雑すぎるようです。

+0

本当にそうではありません。 URIオブジェクトは祝福です(perl punは意図しています)。スキーム、パラメータ、または認証の変更のように構築した後で、パーツを変更したいときは、それを持っているといいです。 canonicalなどでURLを単純化/修正する抽象化とカプセル化は常に努力する価値があります。これは私がPHPの非常に残念な世界にいる今、私がPerlから逃しているタイプのものです。 – Trey

+0

おそらく私は十分な 'enterprisey'のことをやっていないのですが、何年ものPHPで、あなたが投稿した余分なコード行が努力する価値がある状況にはまだ触れていません。私は、スキーム、パラメータ、認証などを与えるbaseurl()関数を作成し、連結します(または既にそれを行うフレームワークを使用します)。 – ceejayoz

0

私はPEARアーカイブで少しの検索を行い、URI::URLの最初の推測近似はNet_URL2です。多分あなたはそのショットを与えたいですか?

+0

Net_URL2はうまくいきますが、正しく処理することはできません。つまり、完全ではない 'page.html'というURLから始めて、$ url-> hostnameが空であるかどうかを確認してから、$ url-> setHost( 'www.example.com' )何らかの理由で$ url-> getUrl()は 'www.example.compage.html'を返します...それは十分スマートではありません。私はURI :: URLをとり、それをPHPに変換するところまで行っています。 :) – pixel

+0

これを行うと、それは確かにPHPコミュニティにとって素晴らしい貢献になるでしょう! –

関連する問題