Ошибка ядра

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО

No ending delimiter '^' found in /core/cms.php on line 1431

#1 5 августа 2013 в 00:06
На странице (не в админке) нажимаю на редактирование любого модуля и у меня высвечивается ошибка:
  1. Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in /home/superzag/public_html/core/cms.php on line 1431
одно и тоже повторяется много раз складываясь в длинный текст, внизу свойства для настройки.

Ниже отрывок из /core/cms.php
  1. // Запоминаем реальный uri
  2. $this->real_uri = $uri;
  3.  
  4. if ($rules){
  5. //перебираем правила
  6. foreach($rules as $rule_id=>$rule) {
  7. //небольшая валидация правила
  8. if (!$rule['source'] || !$rule['target'] || !$rule['action']) { continue; }
  9. //проверяем совпадение выражения source с текущим uri
  10. 1431: if (preg_match($rule['source'], $uri, $matches)){
  11.  
  12. //перебираем совпавшие сегменты и добавляем их в target
  13. //чтобы сохранить параметры из $uri в новом адресе
  14. foreach($matches as $key=>$value){
  15. if (!$key) { continue; }
  16. if (mb_strstr($rule['target'], '{'.$key.'}')){
  17. $rule['target'] = str_replace('{'.$key.'}', $value, $rule['target']);
  18. }
  19. }
  20.  
  21. //действие по-умолчанию: rewrite
  22. if (!$rule['action']) { $rule['action'] = 'rewrite'; }
  23.  
  24. //выполняем действие
  25. switch($rule['action']){
  26. case 'rewrite' : $uri = $rule['target']; $found = true; break;
  27. case 'redirect' : self::redirect($rule['target']); break;
  28. case 'redirect-301' : self::redirect($rule['target'], '301'); break;
  29. case 'alias' : self::includeFile($rule['target']); self::halt();break;
  30. }
  31.  
  32. }
  33.  
  34. if ($found) { break; }
  35.  
  36. }
  37. }
  38.  
  39.  
В чём проблема? Как её можно исправить?
#2 5 августа 2013 в 14:03
У вас пишет, что отсутствует символ "^" в регулярном выражении. Это выражение подгружается из файла url_rewrite.php, который лежит в корне сайта. Проверьте, на месте ли файл. Его права гляньте, может системе он для чтения недоступен. Затем откройте его и посмотрите, все ли регулярные выражения (ячейки 'source') содержат "^" .

Еще правила могут содержаться в файле custom_rewrite.php. Этого файла при дефолтной установке нет, его создает пользователь. Движок его тоже ищет в корне. Аналогично с ним поступите, если он есть.

Отпишитесь.
#3 5 августа 2013 в 14:35
Странник, ошибка была в файле custom_rewrite.php я там забыл вставлять знак "/" для регулярного выражения.
Остались ещё две ошибки в той же строке

  1. Unknown modifier '2' in
  2. Unknown modifier 'o' in
Как их обнаружить ума не приложу.
#4 5 августа 2013 в 14:40
Вы уж, пожалуйста, полный ответ сюда скопируйте.
#5 5 августа 2013 в 14:50
Странник, всё тоже самое что и в предыдущем, только с небольшим изменением.
  1. Warning: preg_match() [function.preg-match]: Unknown modifier '2' in /home/superzag/public_html/core/cms.php on line 1431
Методом перебора определил местоположение ошибки, оказалось что в регулярке я в двух условиях забыл поставить сочетание знаков "\/"
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.