• 締切済み

スクリプトの書き方その3

いつもお世話になります。 XOOPSのコードを読んでいるんですが、沢山の方が関与しているので、 スクリプトの書き方もまちまちです。 そのせいで、素人の私は完全に混乱状態になっています。 ※ PHPマニュアルのサイトでは、preg_xxxっていうのは、 /$str/ とういうように、/(スラッシュ)を使っているので、 !, %, | ? が出てくると、何が正しい書き方なのか全くわかりません。 質問 (1) preg_replace("[\r\n]", "", $str) と preg_replace("/[\r\n]/", "", $str) は同じですか? 質問 (2) preg_replace('!<[^>]*?>!', ' ', $string) と、 preg_replace('/<[^>]*?>/', ' ', $string) は同じですか? 質問 (3) (preg_match('!\W(\w+)$!s', $search, $match) と (preg_match('/\W(\w+)$/s', $search, $match) は同じですか? 質問 (4) preg_replace('?/\*.+\*/?sU', '', $val) の ?とはどういう意味ですか? preg_replace('/\*.+\*/sU', '', $val) と同じですか? それとも、 preg_replace('/?/\*.+\*/?/sU', '', $val) と同じですか? 質問 (5) preg_replace("%(?<!\\\\)'%", "\\'", $string) の、%とはどういう意味ですか? preg_replace("/(?<!\\\\)'/", "\\'", $string) と同じですか? それとも、 preg_replace("/%(?<!\\\\)'%/", "\\'", $string) と同じですか? 迷惑かけますが、どうか、教えて下さい。 よろしくお願いします。

みんなの回答

  • yama06
  • ベストアンサー率61% (101/164)
回答No.1

PHPに明るくは無いのですが、Perlの正規表現の慣習を そのまま持ってきてるのではないでしょうか。 (スラッシュの代わりに!や|を使えるという) 参考URLを読むと、 1の前者は文字クラスでないもので、後者は文字クラスなので 違う。 2はスラッシュを!で代替したものなので、同じ。 3も同様の理由で同じ。 4の?もスラッシュの代替なので、?をスラッシュに置き換えるなら パターン中のスラッシュをエスケープしなければならないので preg_replace('/\/\*.+\*\//sU', '', $val) 5はたぶんpreg_replace("/(?<!\\\\)'/", "\\'", $string) と 同じ。 正規表現はスラッシュで囲うのが一般的ですが、それでは読みにくく なってしまうようなところでは他の記号を使うことで 読みやすくしているのではないでしょうか。

参考URL:
http://phpspot.net/php/man/php/ref.pcre.html
waterclock
質問者

お礼

どうもありがとうございます。 ずっと起きていたかいがありました。 ずいぶん、スッキリしました。これで寝れそうです。 結果が同じでも色々な書き方があって、かなりしびれてます。 preg_match('@^(?:http://)?([^/]+)@i', $url, $matches);は、 preg_match('/^(?:http://)?([^/]+)/i', $url, $matches);では ないことは、実証してわかりました。 これ以外でも、前に質問した追記ですが、 $xxx = &$this.....と $xxx =& $this...は同じかとか、 ずっとXOOPSのスクリプトを自分也に整形してるけど、 途方も無く時間がかかってます。どこかで手を抜かないと..

関連するQ&A