preg_match (): Ошибка компиляции: недопустимый диапазон в классе символов по смещению 4 в F: \ xampp \ htdocs \ script7 \ simple_html_dom.php в строке 1365 [дубликат]

OP не говорит, почему он не работает, но, похоже, проблемы связаны с кодировкой файла. Если у меня есть ANSI-кодированный файл, и я делаю:

var s = "“This is a test” ‘Another test’";
s = s.replace(/[“”]/g, '"').replace(/[‘’]/g,"'");
document.writeln(s);

Я получаю:

"This is a test" "Another test"

Я преобразовал кодировку в UTF-8, исправил умные кавычки (которые разбились когда я изменил кодировку), а затем преобразован обратно в ANSI, и проблема исчезла.

Обратите внимание, что когда я копировал и вставлял двойные и одиночные смарт-цитаты с этой страницы в свой тестовый документ (кодированный ANSI) и запускал этот код:

var s = "“This is a test” ‘Another test’";
for (var i = 0; i < s.length; i++) {
    document.writeln(s.charAt(i) + '=' + s.charCodeAt(i));
}

Я обнаружил, что все умные кавычки появились как ? = 63.

Итак, в ОП определите, откуда берутся интеллектуальные кавычки, и убедитесь, что они - коды символов, которые вы ожидаете от них. Если это не так, подумайте об изменении кодировки источника, чтобы они пришли как “ = 8220, ” = 8221, ‘ = 8216 и ’ = 8217. Используйте мой цикл для проверки источника, если смарт-кавычки отображаются с любыми значениями charCodeAt(), отличными от перечисленных мной, replace() не будет работать так, как написано.

-1
задан sancaryum 1 March 2019 в 19:52
поделиться