• ベストアンサー

【PHP】「\"」が面倒くさいのですがいい方法ありませんか?

Perlを勉強したあと、現在PHPを勉強しています。PHPはまだ数日なのでかなり素人です。 例えば、 HTMLの <meta name="Description"… を代入したい場合、 $data = "<meta name=\"Description\"… とするわけですが、「\」があると見にくいので省略できる方法はありませんでしょうか? $data = "<meta name='Description'… という具合に「"」を「'」に置き換えて記述すればいいような気もするのですが、HTML及びCSSで何から何まで「'」に置き換えて問題ないのか不安です。 お詳しい方よろしくお願いいたします。

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

  • ベストアンサー
回答No.2

シングルクオートで囲めば、とりあえずダブルクオートのエスケープは必要ありません。 $data = '<meta name="Description"… ですが、代入する文字列中にシングルクオートがある場合には当然\でエスケープしなければならないので、例えばこういう場合はエスケープしないと駄目です。 $data = '<a href="#" onclick="window.open(\'foo.html\',\'new_win\')">… ただし、シングルクオートでは「\n」などの特殊文字を展開しない(「\n」とそのまま表示してしまう)のでそのような場合はダブルクオートで囲まないと駄目です。 また、ヒアドキュメントを使えばシングルクオートもダブルクオートも関係なく書けますが、これはある程度長い文字列でないと使いにくいです。 $data=<<<_EOT_ <html> <head> <title>テストページ</title> <meta name="Description" content="……" /> </head> <body> ~~~(中略)~~~ <a href="#" onclick="window.open('foo.html','new_win')">……</a> ~~~(中略)~~~ </body> </html> _EOT_; PHPに限らず、たいていの言語は文字列に関して同様のエスケープをしないとうまくいかないので、「そういうものだ」と諦めるのが一番かも知れません。

参考URL:
http://www.php.net/manual/ja/language.types.string.php
takosuke88
質問者

お礼

詳細にご説明いただきありがとうございます。 割り切って進むことにいたします。

その他の回答 (2)

  • 0x131cc6e
  • ベストアンサー率36% (42/115)
回答No.3

私もエスケープするのがキライな質です。 だからタグの中のクォーテーションはシングルを使って  $data = "<input type='text' name='txvalue'>" ; などと書いています。 シングルクォーテーションを使うことに不安を持たれているようですが、まったく問題ありません。 ちなみにシングルとダブルが逆転する以下のような記述も可能です。  $data = '<input type="text" name="txvalue">' ; ただし、この場合文字列中に変数を埋め込んでも展開してくれないので、私は専ら最初の書き方で通しています。 また、例えば#2さんが書かれているようなOnClickの記述の場合も、中身を一旦変数に入れてしまえばスッキリと書く事ができ、しかも内容を把握しやすく、かつ変更も容易になるのでオススメです。  $strEvent = "window.open('foo.html','new_win')" ;  $data = "<a href='#' OnClick='$strEvent'>" ; しかしこういう方法もやりすぎるとイビツなソースになってしまうので、ある程度のあきらめは必要です。

takosuke88
質問者

お礼

そうですか!シングルで問題ないですか。 それなら全部シングルで書きましょう。 ありがとうございました。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

ヒアテキストを使用すればいいのではないでしょうか print <<<EOF <meta name="Description"… EOF;

takosuke88
質問者

お礼

そうですか~ これがベストなんですかね… ありがとうございました。

関連するQ&A

専門家に質問してみよう