鍍金池/ 問答/PHP  C  Linux/ PHP中如何轉(zhuǎn)義帶單引號'的字符串?

PHP中如何轉(zhuǎn)義帶單引號'的字符串?

數(shù)據(jù)庫中用戶錄入的字符串為Mike's,PHP輸出顯示在網(wǎng)頁中JS會報語法錯誤,提示Uncaught SyntaxError: Unexpected identifier,明顯是多了一個'導(dǎo)致。

頁面報錯輸出代碼

<script>
    var html = '<select><option>Mike's</option></select>';
</script>

明顯這里的引號和js沖突了,可以用雙引號來臨時解決,但是有用戶也會錄入雙引號的信息,所以這里有沒有什么好的方案可以徹底解決該問題呢?

回答
編輯回答
真難過

在php內(nèi)解決

str_replace("'", "/'", $str);

在js里解決,當(dāng)然如果用戶輸入`的話,那也會報錯。還是在php處理好

var html = `<select><option>Mike's</option></select>`;
2017年6月23日 18:47
編輯回答
澐染

轉(zhuǎn)義加反斜杠:

'Mike\'s'

也可以用雙引號:

"Mike's"

雙引號在單引號字符串中不用轉(zhuǎn)義,單引號在雙引號字符串中不用轉(zhuǎn)義。

但要注意單雙引號有些許不同,比如雙引號中可以直接使用變量:

$a='Mike';
"$a's";    //Mike's

還有雙引號中可以使用更多的轉(zhuǎn)義字符,比如\n換行符等。

用戶輸入不用處理,因為PHP內(nèi)部已經(jīng)處理過,其中的單引號是字符,不會和作為語言結(jié)構(gòu)的單引號配對的。

$a='Mike\'s';    //字符串值是Mike's,并不是Mike\'s,轉(zhuǎn)義只是為了和語言結(jié)構(gòu)的單引號區(qū)別開。用戶輸入的結(jié)果也是這樣的。

$b="Mike\"s";    //雙引號也是類似的,字符串值是Mike"s而不是Mike\"s

$c="something $b";    //所以再次使用時不需要處理,$b中的雙引號并不會和代表字符串的雙引號有沖突。

如果你是要放在js代碼中,可以使用addslashes函數(shù)處理,具體請自行查看文檔。

2018年4月30日 07:39
編輯回答
葬憶
<script>
    var html = '<select><option>Mike\'s</option></select>';
</script>
2017年7月31日 22:30