0
は、私は、次のコードを持っている:PHPでJavascript関数に文字列を渡す - 正しくエスケープするには?
echo '
<td>
<input type="button" name="delete" value="X" onclick="clearSelection(this.form, '.$type.');this.form.submit();" />
</td>'
;
問題は$type
ニーズがカッコ内にあることをので、私は、clearSelection()
JavaScript関数に文字列を渡すことができないということです。
私はバックスラッシュ、u0222、複数引用符などで試しましたが、何も解決策には至りませんでした。
ソリューション:あなたが最初にそれをエスケープする必要があり
$type = json_escape_string($type);
$raw_text = "clearSelection(this.form, $type); this.form.submit();";
$escaped_text = htmlspecialchars($raw_text);
echo '<td><input type="button" name="delete" value="X" onclick="'.$escaped_text.'" /></td>';
function json_escape_string($str){
$str = strtr($str, array('\\'=>'\\\\',"'"=>"\\'",'"'=>'\\"',"\r"=>'\\r',"\n"=>'\\n','</'=>'<\/'));
return "'".$str."'";
}
は 'json_encodeは()'は何でない場合利用可能ですか? '未定義関数json_encode()'を呼び出します。 PHP v。5.2.9。 OK、それは 'json_encode()'なしで動作するようです。 – testing
代替関数を使って答えを更新 – Cal
私はあなたの関数を使うと '' clearSelection(this.form、\ 'products \'); onclick属性( 'onlick =" "')のthis.form.submit(); ''それはうまくいかないようです。 – testing