• ベストアンサー

PHPコメントアウト

/* これで複数行コメントアウト できますが、 */ /* $hoge = preg_replace("/[0-9]*/","",$str); */ こいつの正規表現部分でコメント行が止まるんです。 個別に // でその行コメントアウトすれば良いんですが、なんか悔しいので方法無いかなと思いまして。

  • PHP
  • 回答数2
  • ありがとう数4

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

  • ベストアンサー
  • 4017B
  • ベストアンサー率73% (1306/1777)
回答No.2

/* $hoge = preg_replace("/[0-9]*/","",$str); */   ↓ /* $hoge = preg_replace('#[0-9]*#','',$str); */ …一応、コレで通ります。 正規表現のためのパターン文字列は通常、/ で囲いますが必ず / で無ければならない訳でも無く。両側に同じ記号文字が対応していれば、「/、#、<>、|」などでもOKです。 特にURLなどを判別する場合はどうしてもパターン文字列内に / が含まれる事を避ける事が不可避になるため、その部分を1つ1つ ¥/ などとエスケープ処理していたら全体的にコードが煩雑になるため。場合に応じて使い分ける事が出来る様、正規表現の仕様自体が柔軟に出来ています。 同じく正規表現のパターン文字列などに ?> が含まれると、そこでPHP構文自体の終端を意味してしまうため、予期せぬ不具合が発生する事があります。この場合は ?¥> などの様に意味を変化させないエスケープ処理をして回避します。

muuming2001
質問者

お礼

ありがとうございました。勉強なります

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5085/13291)
回答No.1

正規表現の中に「*/」があるので無理ですね。 コメント内なのでダブルコーテーションに囲まれた中の文字列だと言う判断をしてくれません。

muuming2001
質問者

お礼

ありがとうございました

関連するQ&A

  • コメント削除のPHPスクリプトの作成

    PHPファイルのコメント部を全て削除するPHPスクリプトを作成しようと思ったのですが、質問させてください。 $string = <<<here こんにちは。 すみません、乱入します。 //use constant DEBUG_TAIL => 2; //use constant DEBUG_LEX => 4; const DEBUG_ADD = 1; /* ダメダメ */ const DEBUG_TAIL = 2; //use constant DEBUG_TIME => 8; const DEBUG_TIME = 8; here; $comment1 = '/\/\/.*/'; $comment2 = '/\/\*+.*\*+\//is'; $string = preg_replace($comment1, '', $string); $string = preg_replace($comment2, '', $string); のようにすれば(ヒアドキュメント部は)一応ブラウザ上ではコメント部は削除されています。 しかし、ファイルを読み込む(例えばfopen()などで1行ずつ読みこんでいく)方法では$comment2など上手くいかないことは目に見えているのですが、正規表現の指定の仕方が貪欲さの指定も含めてイメージできませんでした。 アドバイスを頂けないでしょうか? PHP5.3です。

    • ベストアンサー
    • PHP
  • 【PHP】preg_replace() で正規表現が正常に動かない?

    PHP5利用者です。 preg_replace() が思い通りに動かないため困っています。 マルチバイト文字及び正規表現を使おうとした場合動作がおかしいのです。例えば、 「 . 」は任意の1文字とされていますが、 $str = preg_replace("/第.回/", "第3回", "今日は第*回目です。"); 等と書いても何も置換されません。 これは一体どういうことなのでしょうか? 文字コードはUTF-8です。 お詳しい方、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPとHTMLをまとめてコメントアウトしたいので

    HTMLの中にPHPが混じっているコードを、上から下まで一気にコメントアウトしたいのですが、どうしたらいいでしょうか? PHPとHTMLに分け、それぞれコメントアウトしていくしかないのでしょうか? それだともの凄く見難くなるのですが…… 後、HTML複数行コメントアウトの中に、PHPコメントアウトを書いてもいいのでしょうか? 例) ----------------------------------------------------- ・今日の天気予報<br> ・一覧 … <?php echo array_sum($hoge); ?> 全国<br>  <table>  <tr id="Theading" >  <th id="Theading"> Yahoo</th>  <th id="Theading"> livedoor</th>  <th id="Theading"> excite</th>  </tr>  <?php foreach($hoge as $k => $v){ ?>  <tr id="Tvalues">  <td><?php echo $piyo; ?></td>  <td><?php echo $k; ?></td>  <td><?php echo $v; ?></td>  <?php $piyo++; ?>  </tr>  <?php } ?>  </table> <br><br> -----------------------------------------------------

    • ベストアンサー
    • PHP
  • 【正規表現】コメントアウトされていない文字列のマッチ

    お世話になっております。 あるファイル群にgrepをかけて結果を取得したいのですが あと半歩という所でつまづいています。 正規表現の考え方のご示唆をいただけませんでしょうか。 宜しくお願い致します。 ■やりたいこと コメントアウトされていない文字列のマッチ ■対象文字列 1行目:ほげ 2行目://ほげ 3行目:// これは否定 ほげ 4行目:ほげ //ここにコメントがはいるとひっかからない(><) ■コメントアウト文字 // 1行目と4行目の「ほげ」をマッチさせたいのです。 正規表現の先読み否定を使って ^(?!//.*)ほげ$ 行頭から、「//」が後に続かなくて「ほげ」がある行末 とやってるのですが、 4行目がひっかかりません。 (?!//.*)の部分で、「//」から「ほげ」までを否定している為だと思うのですが、どのように考え、どのように記載すればスマートでしょうか。 お忙しい所恐縮ですが アドバイスいただければ幸いです。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • preg_replaceで連続した改行

    preg_replaceで5回以上の連続した改行を1回の改行に直したいのですが、 正規表現はどのように書いたらいいのでしょうか? 書いてみたのですが、動いてくれません。。。 <? $str=preg_replace("/\n/{5,}","\n",$str); ?> 申し訳ありませんが、ご教授ください。

    • ベストアンサー
    • PHP
  • 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 の意味は同じですか?

    • ベストアンサー
    • PHP
  • PHPでurlから第4レベルドメインを消すには

    preg_replace()で第4レベルドメインを消したいのですが正規表現の部分が分かりません。 ご存知の方がいらっしゃいましたら、教えていただきたいです。 例) openlab.ring.gr.jp を ring.gr.jp に

    • ベストアンサー
    • PHP
  • VisualStudio2012コメントアウト

    Visual Studio 2010からVisual Studio 2012に乗り換えたのですが、右クリックのコメントアウト機能がなくなってしまって困ってます。 複数の行を一気にコメントアウトしたいのですが、ショートカットなど検索しても出てこずどうしたものかと考えています。バージョンはデスクトップです。よろしくおねがいします。

  • VBのソース検索で、コメントアウト行を除きたい

    いつもお世話になっております。 標題の件なのですが、コメントアウトされていなくて「Set」という文字を含む行を 探したいのですが、探し方が分かりません。 パターンマッチングを使用するにチェックを入れて [!'][ ]*Set?* と設定すると、(※2個目の[ ]の中は半角スペースです) ' Set A = ・・・・ という1行も「'」の後ろから以降からヒットしてしまいます。 半角スペースの数は固定ではないので、任意の数が良いです。 通常の正規表現でしたら、先頭を表す「^」を入れたら良いと思うのですが、 それを入れると何も検索できなくなります。 コメントアウト行を除いた上手な検索方法を教えて頂けたらと思います。 よろしくお願いします。

  • PHPの正規表現について

    // URLエンコード $str =~ s/([^\w ])/'%' . unpack('H2', $1)/eg; $str =~ tr/ /+/; これをPHPの関数を使った方法と使わなかった方法が知りたいです。 また、正規表現で、ereg.., preg.., mb_eregがありますが、この違いの詳細が知りたいです。

    • ベストアンサー
    • PHP