время ожидания сервера с str_replace и одинарные кавычки - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть функция, которая заменяет умные кавычки на одинарные и двойные кавычки. Когда я проверяю, все работает нормально:

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

...