Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Ошибка preg_match

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: на сайте выскочила ошибка Warning: preg_match() [function.preg-match]:
ppos_kat
Отправлено: 27 Февраля, 2015 - 12:18:30
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




На сайте выскочила ошибка:
Warning: preg_match() [function.preg-match]: Unknown modifier 'n' in /home/www/тут указан путь/имя файла.php on line 204

Warning: preg_match() [function.preg-match]: Unknown modifier 'n' in /home/www/тут указан путь/имя файла.php on line 205


Вот часть кода на которую ссылается ошибка:
PHP:
скопировать код в буфер обмена
  1. if ( preg_match("#^$match#", $request_match, $matches) ||
  2.                                                 preg_match("#^$match#", urldecode($request_match), $matches) ) {


Если я правильно понимаю но не правильно прописана функция
PHP:
скопировать код в буфер обмена
  1. preg_match("#^$match#", $request_match, $matches)


Помогите, пожалуйста, разобраться. Что здесь не так? Изначально была ссылка на блок информации на странице (что-то вроде якоря)
 
 Top
GoDr
Отправлено: 27 Февраля, 2015 - 12:33:34
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




ppos_kat, что у тебя в $match


-----
Система управления веб-содержимым Lotos CMS
 
 Top
OrmaJever Модератор
Отправлено: 27 Февраля, 2015 - 12:35:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




У вас в $match попался символ #, можно попробовать preg_quote(), но скорее всего # он не будет экранизировать. заменяйте её вручную через str_replace


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
GoDr
Отправлено: 27 Февраля, 2015 - 12:40:00
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




OrmaJever, прежде чем что-то заменять, нужно знать что там и для чего нужно Закатив глазки Иначе можно просто сделать так


-----
Система управления веб-содержимым Lotos CMS
 
 Top
ppos_kat
Отправлено: 27 Февраля, 2015 - 12:56:24
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Февр. 2015  


Помог: 0 раз(а)




GoDr пишет:
OrmaJever, прежде чем что-то заменять, нужно знать что там и для чего нужно Закатив глазки Иначе можно просто сделать так


Попробовал, не помогло
Ссылка из меню идет вот на этот блок
PHP:
скопировать код в буфер обмена
  1.  <div id="khook_1" class="kgroup">
  2. содержание блока
  3. </div>


вот полностью код на ссылку якорь
PHP:
скопировать код в буфер обмена
  1. foreach ( (array) $rewrite as $match => $query ) {
  2. // If the requesting file is the anchor of the match, prepend it to the path info.
  3.         if ( ! empty($req_uri) && strpos($match, $req_uri) === 0 && $req_uri != $request )
  4.                 $request_match = $req_uri . '/' . $request;
  5.  
  6.         if ( preg_match("#^\Q".$match."\E#", $request_match, $matches) ||
  7.                 preg_match("#^$match#", urldecode($request_match), $matches) ) {
  8.  
  9.              if ( $wp_rewrite->use_verbose_page_rules && preg_match( '/pagename=\$matches\[([0-9]+)\]/', $query, $varmatch ) ) {
  10.                 // This is a verbose page match, let's check to be sure about it.
  11.                      if ( ! get_page_by_path( $matches[ $varmatch[1] ] ) )
  12.                          continue;
  13.                      }
  14.  
  15.                      // Got a match.
  16.                      $this->matched_rule = $match;
  17.                      break;
  18.              }
  19. }

Может это поможет разобраться. Не знаю что еще кинуть
 
 Top
GoDr
Отправлено: 27 Февраля, 2015 - 13:18:29
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




ppos_kat, а я ведь сначала спросил что у тебя в этой переменно, а не предложил экранировать Улыбка

Просто выведи её на экран и покажи.. т.е.
PHP:
скопировать код в буфер обмена
  1. foreach ( (array) $rewrite as $match => $query ) {
  2.     echo $match. '<br>';
  3. }

(Добавление)
.
и кстати, ты в одном месте поменял, а в другом нет


-----
Система управления веб-содержимым Lotos CMS
 
 Top
LIME
Отправлено: 27 Февраля, 2015 - 15:26:56
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




GoDr спорим OrmaJever прав?
 
 Top
Мелкий Супермодератор
Отправлено: 27 Февраля, 2015 - 15:40:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




OrmaJever пишет:
можно попробовать preg_quote(), но скорее всего # он не будет экранизировать

С чего это?
Тупой итератор по строке, подставляющий \ перед символами, определёнными в исходнике функции статично и, в добавок, указанному в необязательном втором аргументе.


-----
PostgreSQL DBA
 
 Top
LIME
Отправлено: 27 Февраля, 2015 - 15:44:26
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




дада Мелкий
вот этот момент я и забыл пояснить
экранирование средствами самого PCRE как раз # не обработает
 
 Top
GoDr
Отправлено: 27 Февраля, 2015 - 16:49:09
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




LIME пишет:
экранирование средствами самого PCRE как раз # не обработает
О как А?! Не знал.. +1

Получается нужно менять

например, на это

(Отредактировано автором: 27 Февраля, 2015 - 16:49:23)



-----
Система управления веб-содержимым Lotos CMS
 
 Top
LIME
Отправлено: 27 Февраля, 2015 - 16:54:15
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




GoDr лучше применить ф-цию включив ограничитель в доп параметр
Чтоб уж железно
В твоем случае естественно # не будет экранирован он ведь не спецсимвол
(Добавление)
Ведь никто не гарантирует что в переменной потом не попадется /
(Добавление)
А# используют просто потомучто нагляднее
От палок итак в глаз рябитУлыбка
 
 Top
GoDr
Отправлено: 27 Февраля, 2015 - 17:05:58
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




да я тоже стал в своё время использовать # только потому, что она достаточно заметна, да и в тексте очень редко используется, особенно в поиске
(Добавление)
.
вот не знаешь где нежданчик подвернётся Радость


-----
Система управления веб-содержимым Lotos CMS
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB