Ошибка «preg_match(): Compilation failed: invalid range in character class»

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Был сделан парсер сайтов, который благополучно работал и работал, пока не перенес на другой хостинг. И все, код отрабатывает а результата нет. В лог-файле начало появляться следующее предупреждение

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 ошибка пропадает.

 

2 комментария

  • Герман

    Добрый день! при переходе на РНР 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);
    Как решить?

    • admin

      Нашел код плагина, у меня строка 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\-» — стало

Добавить комментарий для Герман Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *