アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHPで書き出したSQL文をjavascriptの関数に渡すなどしていて、
ダブルクォーテーションやシングルクォーテーションが4つ以上の入れ子になったときどのように表現すればよいのでしょうか?


$a = "<a onClick=\"test('SELECT * FROM table WHERE field = 'field'')\">text</a>";
*test()はjavascriptの関数とします。

このように入れ子が深くなっていったときの回避の方法やクォーテーションの使い方の規則などあれば教えてください。

A 回答 (2件)

???


入れ子自体よくないよ

というか切り分けがはっきりしてないね
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=""; の中身で衝突する「"」と「\"」という「文字列」をエスケープすれば良い事になるね。
それ以上の多段は、多分無理・・・
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/24 19:58

単純な話#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;
?>
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/24 20:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!