バージョン選択

フォーラム

メニュー

オンライン状況

23 人のユーザが現在オンラインです。 (19 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 23
もっと...

サイト内検索

 > 管理機能 > /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さんは書きました:
かなりオフトピ気味ですが・・・

> 何故, わざわざ /U をつけているかが疑問ですね...

普通は$_SERVER['HTTP_HOST']にはポート番号入らないからじゃないでしょうか。

まぁ、いずれにしてもPear::Net_URLの話なのは確かですね


あああ, 頭固まってました(汗)
そういうことですね. ありがとうございます^^;
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について
引用:

また/^(.*)(:([0-9]+))?$/Uの/Uをなくして*や+や?を加えて表すとどんな式になるのでしょうか。


うーん. 下記で同じ結果が得られると思うんですが...


/^(.*)(:([0-9]+))$/


何故, わざわざ /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 がどうなっているかも確認すると良いかも知れません。

参考まで。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

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をなくして*や+や?を加えて表すとどんな式になるのでしょうか。
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,459名です
総投稿数は110,097件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1654
8
red
1570
9
mcontact
1306
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.