У меня есть функция, которая заменяет умные кавычки на одинарные и двойные кавычки. Когда я проверяю, все работает нормально:
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), но ни один из них не сработал. Он правильно находит умную цитату и может заменить ее на что угодно, кроме обычной одинарной цитаты ». Любая помощь очень ценится.