0

PHP コードでいくつかの JavaScript を生成しています。いくつかの PHP 変数を JavaScript 変数に割り当てる必要があります。残念ながら、PHP 変数に引用符が含まれていることがあります。例えば:

$foo = "'Dis here be a \"string\"";
print "<script type='text/javascript'>var foo = '{$foo}';</script>";

結果のjavascriptは次のようになるため、javascriptエラーが生成されます。

<script type='text/javascript'>var foo = '"'Dis here be a \"string\"';

$foo で正規表現を使用してすべての'マークを置き換えることができることはわかっています\'が、これはさまざまな理由で困難です。それ以外に何かできることはありますか?perl関数に似たものq()...

4

7 に答える 7

6

これをやってみましたか?

$foo = "'Dis here be a \"string\"";
echo '<script type="text/javascript">var foo = "'.addslashes($foo).'";</script>';

参照: http://php.net/manual/en/function.addslashes.php

于 2009-11-19T01:22:07.547 に答える
3

json_encode() を使用します。

http://ie2.php.net/manual/en/function.json-encode.php

于 2009-11-19T01:35:52.370 に答える
2

これは正しい方向への一歩となるはずです:

addcslashes($str, "\"\r\n\\\t/\0..\37");
于 2009-11-19T01:23:40.703 に答える
1

本気ですか?ではない:

var foo = ''Dis here be a "string"'

二重を防ぐために ' 試してください:

$foo = "\'Dis here be a \"string\"";

また

$foo = '\\\'Dis here be a "string"';
于 2009-11-19T01:21:40.090 に答える
1

PHPファイルをJavaScriptファイルとして使用できることも注目に値します

<script type="text/javascript" src="js/main.php"></script>

そして、そのファイルで PHP コードを実行したり、PHP からエコーすることで JavaScript コードを出力したりできます。

于 2009-11-19T01:48:28.110 に答える
0

JavaScript で最終値を使用しているので、次を使用しますjson_encode

$foo = "'Dis here be a \"string\"";
print "<script type='text/javascript'>var foo = " . json_encode($foo) . ";</script>";

そして、正しく出力されます:

<script type='text/javascript'>var foo = "'Dis here be a \"string\"";</script>

関数を余分な引用符で囲んでいないことに注意してくださいjson_encode。有効な JavaScript 文字列にするために必要な引用符が自動的に追加されます。

于 2009-11-19T01:36:18.750 に答える
0

Frank Farmer の回答は興味深いものですが、タブなど、エスケープする必要のないものをエスケープしています。

このスニペットを試してみてください。問題なく動作します。

<script type="text/javascript">
    alert("Hi!\n\tHi!\n<?php echo '\tHI!',"\\n\tHI!";?>");
</script>

テキストを Javascript 文字列に直接渡す PHP スクリプトで、常にデータベースに接続しているので、面倒な作業は real_escape_string に頼っています。addslashes() は改行を処理せず、Javascript に渡している文字列に忍び込むことがあります。

シンプル$sql->real_escape_string($string)にすると、データベースが吐き出すものを Javascript に適した形式にエスケープして、すべてが改善されます。

于 2013-01-31T20:51:39.840 に答える