我想逃避所有未被轉義的雙引號。如何避免彼此之間的報價?
我使用real_escape_string()了,但我想知道什麼是錯與後續的正則表達式/方法:
$str = '"Hello "" """ world!\"';
preg_replace('/(^|[^\\\\]{1})\"/', '${1}\"', $str);
(PS:我知道 - \\」將不進行轉義,並且可能在其他一些情況下一個問題,但這個不要緊,我的腳本)
結果是:
\"Hello \"" \""\" world!\"
但我想它是:
\"Hello \"\" \"\"\" world!\"
對於一個SQL插入,你不應該在任何情況下推出你自己的轉義**。改用參數化查詢。 –
這是一個糟糕的主意,但是你可以這樣做的一個快速方法是:1)用一個未轉義的引用替換所有的轉義引號,然後2)用轉義的引號替換所有未轉義的引號:'str_replace (array('\'','''),array(''','''),$ str);' – nickb
@WaleedKhan:謝謝你的建議,通常我不會。雖然在這種情況下,可能會弄亂任何東西的唯一字符是雙引號 - 尋找一個快速解決方案。 –