我有一个函数用单引号和双引号替换智能引号。当我像这样测试时,它可以正常工作:
function convert_smart_quotes($string) {
$search = array(chr(0xe2) . chr(0x80) . chr(0x98),
chr(0xe2) . chr(0x80) . chr(0x99),
chr(0xe2) . chr(0x80) . chr(0x9c),
chr(0xe2) . chr(0x80) . chr(0x9d),
chr(0xe2) . chr(0x80) . chr(0x93),
chr(0xe2) . chr(0x80) . chr(0x94)
);
$replace = array("FOUND SINGLE QUOTE", chr(39), '"', '"', '-', '-');
return str_replace($search, $replace, $string);
}
它正确返回字符串“ FOUND SINGLE QUOTE”并将左引号替换为chr(39)。
但是,当我尝试通过添加第二个chr(39)代替“ FOUND SINGLE QUOTE”来替换左引号时,如下所示:
$replace = array(chr(39), chr(39), '"', '"', '-', '-');
服务器超时。我已经尝试了所有可能想到的方法(包括使用反斜杠和addlashes()分别转义每个字符,并使用实际的引号“'”代替chr(39),但这些都不起作用。它可以正确找到智能引号并可以将其替换为除常规单引号以外的任何内容。非常感谢您的帮助。