目前共有6篇帖子。
在JavaScript腳本的字元串中嵌入PHP變數的時候,addslashes函數非常有用
1樓 巨大八爪鱼 2015-11-21 12:46

<?php
$name = 'Mary\'s book has been "\stolen".';
?>
<script>
function a() {
 alert("<?=addslashes($name)?>");
}
</script>


輸出:
<script>
function a() {
 alert("Mary\'s book has been \"\\stolen\".");
}
</script>

這樣就不會因為php變數中的特殊字元導致生成的JS腳本出現語法錯誤。

2樓 巨大八爪鱼 2015-11-21 12:58
addslashes — 使用反斜線引用字元串:
http://php.net/manual/zh/function.addslashes.php

返回字元串,該字元串為了資料庫查詢語句等的需要在某些字元前加上了反斜線。這些字元是單引號(')、雙引號(")、反斜線(\)與 NUL(NULL 字元)。
3樓 巨大八爪鱼 2015-11-21 13:02

可以使用stripslashes函數取消addslashes的轉義。

例如:
<?php
$str = 'Mary\'s book has been "\stolen".';
$str2 = addslashes($str);
$str2 = stripslashes($str2);
echo strcmp($str, $str2);

?>

輸出0,,表示$str和$str2是相同的字元串。

4樓 巨大八爪鱼 2015-11-21 13:19

【示例】
PHP從外部獲取了一段javascript腳本,其中有一個alert語句,alert語句中的字元已經經過了轉義以防止出現JS語法錯誤。這時PHP想要把這個字元串取出來,解析出轉義前的內容,也就是alert對話框中實實在在顯示的內容。
程序如下:
<?php
$str = 'alert("Mary\\\'s book has been \"\\\\stolen\".");'; // 這是從HTML網頁中抓取的JS Alert語句
$str = preg_replace('/^alert\("/', '', $str);
$str = preg_replace('/"\);$/', '', $str);
$str = stripslashes($str);
echo "您在Javascript中彈出的提示框的內容為:$str";
?>
輸出:您在Javascript中彈出的提示框的內容為:Mary's book has been "\stolen".

這正和alert對話框中顯示的內容一樣。

5樓 巨大八爪鱼 2015-11-21 13:34
【總結】
把PHP變數放入JavaScript字元串中:
<script>
function a() {
 alert("<?=addslashes($var)?>");
}
</script>

把Javascript字元串表示的內容解析到PHP變數中:
<?php
$str = 'alert("x\"xx")'; // 從外部獲得的JavaScript代碼中的一句alert語句
$start = strpos($str, '"'); // 第一次雙引號出現的位置
$end = strrpos($str, '"'); // 最後一次雙引號出現的位置
$content = substr($str, $start + 1, $end - $start - 1); // 截取$str中雙引號中的內容
$content = stripslashes($content); // 去除JavaScript轉義
echo $content;
?>
輸出x"xx,正是JavaScript字元串所表示內容。

6樓 巨大八爪鱼 2015-11-21 13:55
類似的,通過addslashes函數,PHP變數把一段JS代碼傳遞給JavaScript並eval執行。
<?php
$script = 'var a="This";var b="is";alert(a+" "+b+" a pen.");';
?>
<script>
function b() {
 var scr = "<?=addslashes($script)?>";
 eval(scr);
}
</script>

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
 
 
©2010-2025 Arslanbar [手機版] [桌面版]
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。