• ベストアンサー

PHPでjavascriptを書き出すときのクォーテーションの使い方

PHPで書き出したSQL文をjavascriptの関数に渡すなどしていて、 ダブルクォーテーションやシングルクォーテーションが4つ以上の入れ子になったときどのように表現すればよいのでしょうか? 例 $a = "<a onClick=\"test('SELECT * FROM table WHERE field = 'field'')\">text</a>"; *test()はjavascriptの関数とします。 このように入れ子が深くなっていったときの回避の方法やクォーテーションの使い方の規則などあれば教えてください。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

単純な話#quot;をつかいます。 またPHPとjavascript間での調整なら、PHP出力するときに ヒアドキュメント(例D)を使うとエスケープする必要がなくなります <? $a = "<a href=\"#\" onClick=\"alert('SELECT * FROM table WHERE field = \'field\'')\">textA</a><br>"; print $a; $b = "<a href=\"#\" onClick=\"alert(&quot;SELECT * FROM table WHERE field = 'field'&quot;)\">textB</a><br>"; print $b; $c = "<a href=\"#\" onClick=\"alert('SELECT * FROM table WHERE field = &quot;field&quot;')\">textC</a><br>"; print $c; $d =<<<eof <a href="#" onClick="alert(&quot;SELECT * FROM table WHERE field = 'field'&quot;)">textD</a><br> eof; print $d; ?>

dooittnoww
質問者

お礼

ご回答いただきありがとうございます。 大変参考になる例を示していただき、良く理解できました。

その他の回答 (1)

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

??? 入れ子自体よくないよ というか切り分けがはっきりしてないね PHPとしての最初のクォティションと最後のクォティションはそのままで、内側の同種クォティションはエスケープが基本だとして 書出された時に(PHPじゃなくてHTMLとしての姿で) <a onClick="test('SELECT * FROM table WHERE field = \"field\"')">text</a> または <a onClick="test(\"SELECT * FROM table WHERE field = 'field'\")">text</a> となれば良いというのは判る? 後は $a=""; の中身で衝突する「"」と「\"」という「文字列」をエスケープすれば良い事になるね。 それ以上の多段は、多分無理・・・

dooittnoww
質問者

お礼

ご回答頂きありがとうございます。 教えて頂いた例文を参考になんとかできました。

関連するQ&A

専門家に質問してみよう