- ベストアンサー
PHPでjavascriptを書き出すときのクォーテーションの使い方
PHPで書き出したSQL文をjavascriptの関数に渡すなどしていて、 ダブルクォーテーションやシングルクォーテーションが4つ以上の入れ子になったときどのように表現すればよいのでしょうか? 例 $a = "<a onClick=\"test('SELECT * FROM table WHERE field = 'field'')\">text</a>"; *test()はjavascriptの関数とします。 このように入れ子が深くなっていったときの回避の方法やクォーテーションの使い方の規則などあれば教えてください。
- みんなの回答 (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("SELECT * FROM table WHERE field = 'field'")\">textB</a><br>"; print $b; $c = "<a href=\"#\" onClick=\"alert('SELECT * FROM table WHERE field = "field"')\">textC</a><br>"; print $c; $d =<<<eof <a href="#" onClick="alert("SELECT * FROM table WHERE field = 'field'")">textD</a><br> eof; print $d; ?>
その他の回答 (1)
- SAYKA
- ベストアンサー率34% (944/2776)
??? 入れ子自体よくないよ というか切り分けがはっきりしてないね 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=""; の中身で衝突する「"」と「\"」という「文字列」をエスケープすれば良い事になるね。 それ以上の多段は、多分無理・・・
お礼
ご回答頂きありがとうございます。 教えて頂いた例文を参考になんとかできました。
お礼
ご回答いただきありがとうございます。 大変参考になる例を示していただき、良く理解できました。