2011-10-24 4 views
0

基本的に、私はユーザーの入力を受け取り、PHPのページのjavascript関数に渡しています。しかし、ユーザーのアポストロフィを使用するため、エラーが発生しています。 PHPでは、引用符で囲まれた変数に適切なエスケープ関数を使用するのは何ですか? IE:phpからjavascriptをビルドするときにエスケープする

いくつかのPHP:ずっと

$userString = "Joe's Pizza"; 
// escape here 
echo "<script type=\"text/javascript\">myFunction('$userString');</script>"; 

ありがとう!

答えて

2

addslashes;例えば

$userString = addslashes("Joe's Pizza"); 
print '<script type="text/javascript">myFunction('$userString');</script>";; 
+0

しないでください。 – AlienWebguy

+0

さて、彼は尋ねました。とにかく何をお勧めしますか? – Wayne

+0

@Alienでは、ここにaddslashesの問題はありません(データベースのエスケープには大きな問題があります)。柔軟性に欠けているだけです。 –

6

オブジェクト/連想配列でラップし、json_encodeを使用します。

$array = array('data' => $userString); 
$encoded_array = json_encode($array); 
echo "<script type=\"text/javascript\">myFunction($encoded_array);</script>"; 

MyFunctionのは、次のようになります。これはまた、必要であれば、簡単にオブジェクトをより複雑にすることができます

function myFunction(obj) 
{ 
    var data = obj.data; 
    ... 
} 

+0

私はこの特定のインスタンスでは配列は必要ないので、私は他の選択肢と一緒に行くつもりですが、良い提案です。私は一般的に、私のjsonオブジェクトを文字列として構築しましたが、これは明らかにそれを行う良い方法です。だから、もっと複雑なオブジェクトを返す必要があるときは、これを使用します。 –