Был сделан парсер сайтов, который благополучно работал и работал, пока не перенес на другой хостинг. И все, код отрабатывает а результата нет. В лог-файле начало появляться следующее предупреждение
PHP Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /home/gqyyamy8q3wv/public_html/includes/simple_html_dom.php on line 1365
Решение ошибки preg_match
Данная ошибка возникла при версии PHP 7.3, при смене версии на 5.6 ошибка пропадает.
Добрый день! при переходе на РНР 8,0 возникла проблема:
Warning: preg_match_all(): Compilation failed: invalid range in character class at offset 4 in /home/users/m/mail27/domains/gera55.ru/wp-content/plugins/lightbox-plus/classes/shd.class.php в строке:
preg_match_all($pattern, trim($selector_string).’ ‘, $matches, PREG_SET_ORDER);
Как решить?
Нашел код плагина, у меня строка 688, функция
protected function parse_selector($selector_string) {
в ней строка 699 и ниже
$pattern = «/([\w-:\*]*)(?:\#([\w-]+)|\.([\w-]+))?(?:\[@?(!?[\w-:]+)(?:([!*^$]?=)[\»‘]?(.*?)[\»‘]?)?\])?([\/, ]+)/is»;
preg_match_all($pattern, trim($selector_string).’ ‘, $matches, PREG_SET_ORDER);
тут проблема скорей всего не в preg_match_all а в условии $pattern
попробуйте экранировать знак «-»
тоесть так
«w-» — было
«w\-» — стало