• ベストアンサー

PHPで

1. $html = preg_replace( '/ class=[\'"]([^\'"]+)[\'"]/i', '', $html ); return $html; と return preg_replace( '/(height|width)="\d*"\s/', "", $html ); の '/ class=[\'"]([^\'"]+)[\'"]/i' と '/(height|width)="\d*"\s/' の結果はどっちも中身を空欄にするのですが、なぜ=の右の表現方法が違いますか? 意味はどう違いますか? 2. それから、 $html = preg_replace( '/ class=[\'"]([^\'"]+)[\'"]/i', '', $html ); は return preg_replace( '/ class=[\'"]([^\'"]+)[\'"]/i', '', $html ); でも意味は同じですか? return $html;を使ったほうがいいですか? 3. それから '', $html と "", $html の意味は同じですか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#244856
noname#244856
回答No.1

2, 3 の質問内容があまりにも初歩的すぎるのに対して 1 は少し難解になってきますがご了承ください。 【2】 $html = ...; return $html; と return ...; は同じです。値を代入してからそれをreturnしても、値自体をreturnしても動作に相違点はありません。好みの問題です。 【3】 シングルクオーテーションとダブルクオーテーションはどちらも文字列リテラルを表します。今回のケースはただの空文字列なので全く同じ意味です。但し特殊文字が入ってくる場合はこの限りではありません。 http://qiita.com/mpyw/items/d61b50d90e84e289e2be 【1】 どちらもパターンにマッチしたものを空文字列に置換しますが、パターンそのものが違っています。 / class=[\'"]([^\'"]+)[\'"]/i 「 class="..."」にマッチする。「...」の部分は「"」以外の文字の1回以上の繰り返しとして表現している。「i」オプションがあるので大文字小文字を区別しない。 /(height|width)="\d*"\s/ 「height="..." 」または「width="..." 」にマッチする。「...」の部分は半角数字の0回以上の繰り返しとして表現している。末尾の半角スペースは改行やタブであってもよい。 (どこで使われているコードなのか存じませんが)正直な感想、書き方に一貫性が無いので書いた人もかなり大雑把なんだろうなぁと思います… http://www.mnet.ne.jp/~nakama/

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.3

まずはPHPに入門しましょう。大きな書店に行けば、何種類もの入門書があるので、自分に合う物を探しましょう。 プログラムを読むのはそれからです。 入門書を読み終えれば、3つの疑問は解決します。

  • t_ohta
  • ベストアンサー率38% (5253/13739)
回答No.2

1.HTMLで class="・・・" と height="・・・" では「・・・」に入る文字種が違うからでしょうね。 厳密に判定しようとしてるのでしょう。 2.どちらでも結果は一緒ですね。 実行内容は異なるので「意味」まで一緒かというと、「意味」の捉え方次第では異なるとも言えるし同じとも言えるし... 3.どちらでも結果は一緒ですね。 実行内容は異なるので「意味」まで一緒かというと、「意味」の捉え方次第では異なるとも言えるし同じとも言えるし...

関連するQ&A

専門家に質問してみよう