簡體   English   中英

將字符串傳遞到 Javascript function 全部在 PHP - 如何正確轉義?

[英]Pass a string into a Javascript function all in PHP - How to escape correctly?

我有以下代碼:

echo '
    <td>    
        <input type="button" name="delete" value="X" onclick="clearSelection(this.form, '.$type.');this.form.submit();" />
    </td>'
;

問題是我無法將字符串傳遞給clearSelection() Javascript function,因為$type需要放在括號中。

我嘗試使用反斜杠、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."'";
}

你需要先逃避它:

$escaped_text = HtmlSpecialChars(json_encode($raw_text));

json_encode()將其轉換為有效的 JS 字符串,然后HtmlSpecialChars()將其轉義以在 HTML 屬性中使用。

如果您有沒有 json_encode() 的舊版本 PHP,請改用它:

$escaped_text = HtmlSpecialChars(json_escape_string($raw_text));

function json_escape_string($str){
    $str = strtr($str, array('\\'=>'\\\\',"'"=>"\\'",'"'=>'\\"',"\r"=>'\\r',"\n"=>'\\n','</'=>'<\/'));
    return "'".$str."'";
}

對於您的特定變量:

$escaped_type = HtmlSpecialChars(json_escape_string($type));
echo '<td><input type="button" name="delete" value="X" onclick="clearSelection(this.form, '.$escaped_type.'); this.form.submit();" /></td>';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM