> 管理機能 > /data/module/Net/URL.phpの144行目の/^(.*)(:([0-9]+))?$/Uについて |
管理機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
nanasess |
投稿日時: 2010/1/18 17:46
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: /data/module/Net/URL.phpの144行目の/^(.*)(:([0-9]+))?$/Uについて 引用:
あああ, 頭固まってました(汗) そういうことですね. ありがとうございます^^; |
johnny |
投稿日時: 2010/1/18 17:34
対応状況: −−−
|
新米 登録日: 2010/1/18 居住地: 投稿: 5 |
Re: /data/module/Net/URL.phpの144行目の/^(.*)(:([0-9]+))?$/Uについて かなりオフトピ気味ですが・・・
> 何故, わざわざ /U をつけているかが疑問ですね... 普通は$_SERVER['HTTP_HOST']にはポート番号入らないからじゃないでしょうか。 まぁ、いずれにしてもPear::Net_URLの話なのは確かですね |
nanasess |
投稿日時: 2010/1/18 17:18
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2314 |
Re: /data/module/Net/URL.phpの144行目の/^(.*)(:([0-9]+))?$/Uについて 引用:
うーん. 下記で同じ結果が得られると思うんですが...
何故, わざわざ /U をつけているかが疑問ですね... ここよりも, PEAR general list ML などにポストした方が, 的確な回答が返ってくると思います. http://pear.php.net/support/lists.php |
johnny |
投稿日時: 2010/1/18 17:18
対応状況: −−−
|
新米 登録日: 2010/1/18 居住地: 投稿: 5 |
Re: /data/module/Net/URL.phpの144行目の/^(.*)(:([0-9]+))?$/Uについて おおっと。間違った回答すみません。。
最長マッチ最短マッチの時に使ったことがあるような気がしてきました・・・ ちなみに、私は最短マッチさせたい時はこんな書き方しています /^(.*?)(:([0-9]+))?$/ 結果は /^(.*)(:([0-9]+))?$/U これと一緒ですね。 ご紹介のサイトでも、同じ結果が帰ってきてますね。 いい勉強になります。ありがとうございます。 |
ramrun |
投稿日時: 2010/1/18 16:48
対応状況: −−−
|
仙人 登録日: 2006/11/3 居住地: 投稿: 789 |
Re: /data/module/Net/URL.phpの144行目の/^(.*)(:([0-9]+))?$/Uについて ちと違うような。
大文字のUはPCRE_UNGREEDYですよね。 下記のサイトで 対象文字列 www.hoge.jp:80 パターン /^(.*)(:([0-9]+))?$/ で修飾子のUのチェックを切り替えると、様子がよくわかると思います。 PREG ONLINE | PHPの種 http://www.php-seed.net/preg/ |
johnny |
投稿日時: 2010/1/18 16:19
対応状況: −−−
|
新米 登録日: 2010/1/18 居住地: 投稿: 5 |
Re: /data/module/Net/URL.phpの144行目の/^(.*)(:([0-9]+))?$/Uについて ちょっと気になったので別にレスを
正直、正規表現はあまり得意じゃないのですが >にあるpreg_match('/^(.*)(: ([0-9]+))?$/U',$HTTP_SERVER_VARS['HTTP_HOST'],$matches)の/Uは*や+や?で正規表現を作らず/Uを使う理由はあるのでしょうか。たとえば改行や空欄などがあってもマッチさせるために入れてあるとか。 これは間違いなく正規表現ですよ。 「/」が正規表現のセパレータですね。 /U 部分はuスイッチ?オプション?です。 # //u で、「UTF8と明示してマッチングする」です。 # //i の「大文字小文字を区別しない」と同じですね。 # 大文字Uは知らないのですが、多分一緒・・・コードを書いた人の手癖かなと思います。 # $HTTP_SERVER_VARS['HTTP_HOST']にマルチバイトが入る事はないはずなので・・・ なので、「/Uをなくして〜」の答えは 「なくしちゃダメです!」または 「Uが気になるなら取っちゃえ(/は取っちゃダメ)」です。 で、合ってますよね?(笑 |
seasoft |
投稿日時: 2010/1/18 16:06
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: /data/module/Net/URL.phpの144行目の/^(.*)(:([0-9]+))?$/Uについて 興味深いですね。
しかし、PEAR::Net 関連の場へ話を振った方が、適切な回答を得やすいかもしれません。 あと、念のため、最新バージョンの PEAR::Net がどうなっているかも確認すると良いかも知れません。 参考まで。
|
isi |
投稿日時: 2010/1/18 15:57
対応状況: −−−
|
新米 登録日: 2010/1/3 居住地: 投稿: 5 |
/data/module/Net/URL.phpの144行目の/^(.*)(:([0-9]+))?$/Uについて /data/module/Net/URL.phpの144行目の
if (!empty($HTTP_SERVER_VARS['HTTP_HOST']) AND preg_match('/^(.*)(:([0-9]+))?$/U', $HTTP_SERVER_VARS['HTTP_HOST'], $matches)) { にあるpreg_match('/^(.*)(:([0-9]+))?$/U',$HTTP_SERVER_VARS['HTTP_HOST'],$matches)の/Uは*や+や?で正規表現を作らず/Uを使う理由はあるのでしょうか。たとえば改行や空欄などがあってもマッチさせるために入れてあるとか。 また/^(.*)(:([0-9]+))?$/Uの/Uをなくして*や+や?を加えて表すとどんな式になるのでしょうか。 |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |