質問

私は私のPHPコード内のいくつかのJavaScriptを生成しています、と私はjavascriptの変数にいくつかのPHP変数を割り当てる必要があります。残念ながら、時には私の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()機能に似て何か...

役に立ちましたか?

解決

は、これをやってみました?

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

を参照してください: http://php.net/manual/en/function.addslashes .PHPする

他のヒント

私はjson_encode()を使用します。

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

これは正しい方向へのステップであるべきである。

addcslashes($str, "\"\r\n\\\t/\0..\37");

よろしいですか?そうではありません。

var foo = ''Dis here be a "string"'
<時間>

double 'の試みを防止するために:

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

または

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

それはまた、あなたがJavaScriptファイルとしてPHPファイルを使用することができることは注目に値します。

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

そして、あなたはPHPからのエコーによって出力JavaScriptコードだけでなく、そのファイルにPHPコードを実行することができます。

あなたは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の文字列を作るために必要な引用符を追加します。

フランク・ファーマーの答えは興味深いですが、それは、タブのように、エスケープする必要はありませんいくつかのことを脱出です。

このスニペットを試してみてください、それだけで正常に動作します:

<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優しい形に出してくれるものは何でもエスケープ、すべての良いことになります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top