やりたいこと
PHPでURL文字列のポートとかパスとかを書き換えたい。
たとえば、 http://localhost/hoge/moge というURLから、
http://localhost:8888/hoge/moge を作ったりだとか、
http://localhost/uge を作ったりしたい。
正規表現でぐりぐり弄っても良かったけれど……
可読性の低いコードになりそうだったので、今回はライブラリを探して利用してみることにした。
使ったもの
pear/Net_URL2
https://github.com/pear/Net_URL2
Class for parsing and handling URL. Provides parsing of URLs into their constituent parts (scheme, host, path etc.), URL generation, and resolving of relative URLs.
スキーム、ホスト、パスなどの解析を行ったり、組み立てたりできる、便利そうなやつ。
使い方
インストール
Composerにも置かれていたので、以下のコマンドでインストールした。
$ composer require pear/net_url2
ソースコード
url.php
// ライブラリの読み込み
require('vendor/autoload.php');
// 元となるURL文字列からインスタンスを生成
$url = new Net_URL2('http://localhost/hoge/moge');
// 情報を書き換える
$url->setPort(8888);
$url->setPath('/uge');
// http://localhost:8888/uge
echo $url->getURL();