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_replace

 PHP.SU

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


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

> Без описания
singmen
Отправлено: 19 Февраля, 2013 - 18:50:36
Post Id


Гость


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


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




Warning: preg_replace() [function.preg-replace]: Unknown modifier '(' in Z:\home\ on line 287

Warning: preg_replace() [function.preg-replace]: Unknown modifier '<' in Z:\home\ on line 288


PHP:
скопировать код в буфер обмена
  1. $str['maintext'] = preg_replace("<p>(.+)<\/p>/Usi","[p]\\1[/p]",$str['maintext']);
  2. $str['maintext'] = preg_replace("<pre><code>(.+)<\/code><\/pre>/Usi","[_code]\\1[_/code]",$str['maintext']);
  3.  
  4.  


Ребят, в чем может быть ошибка?

(Отредактировано автором: 19 Февраля, 2013 - 18:51:59)

 
 Top
NoPaper
Отправлено: 19 Февраля, 2013 - 18:57:00
Post Id



Посетитель


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


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




Почему слеша нет в начале регулярки?
 
 Top
singmen
Отправлено: 19 Февраля, 2013 - 19:06:03
Post Id


Гость


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


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




NoPaper

PHP:
скопировать код в буфер обмена
  1. $str['maintext'] = preg_replace("<strong>/(.+)</strong>/Usi","[b]\\1[/b]",$str['maintext']);


Ставлю слеш и нет результата, ошибка меняется на:

Warning: preg_replace() [function.preg-replace]: Unknown modifier '/' in ... on line 283

В другую сторону / тот же результат.
 
 Top
OrmaJever Модератор
Отправлено: 19 Февраля, 2013 - 19:15:17
Post Id



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


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


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




видимо вы вобще не знакомы с php и регулярками в частности. Забейте на это гиблое дело.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DelphinPRO
Отправлено: 19 Февраля, 2013 - 20:47:15
Post Id



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


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


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




singmen
регулярка должна быть ограничена парой символов, вне которых пишутся модификаторы.
Причем эта пара символов может быть любой.
у вас первый символ "<".
соответственно замыкающий - первый попавшийся неэкранированный ">".
все, что за этими символами считается модификаторами.
модификатора "/" не существует - вот вам и ошибка.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
LShark
Отправлено: 19 Февраля, 2013 - 20:47:43
Post Id



Частый гость


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


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




Почитайте внимательнее про прегреплейс, или вместо строк используйте массивы значений, в которые внесено "что менять" и "на что менять".

А про это - надо оборачивать в /регулярка/


-----
Истина прежде всего в том, что...
 
 Top
singmen
Отправлено: 20 Февраля, 2013 - 12:59:27
Post Id


Гость


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


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




LShark пишет:
Почитайте внимательнее про прегреплейс, или вместо строк используйте массивы значений, в которые внесено "что менять" и "на что менять".

А про это - надо оборачивать в /регулярка/


"что менять" и "на что менять" - этот способ я знаю, с ним было много ошибок, нужно с помощью регулярок.

CODE (htmlphp):
скопировать код в буфер обмена
  1. $str['maintext'] = preg_replace("<strong>/(.+)/</strong>","[b]\\1[/b]",$str['maintext']);


Так сделал, все равно ошибка.
(Добавление)
CODE (htmlphp):
скопировать код в буфер обмена
  1. $str['maintext'] = preg_replace("/<strong>(.+?)<\/strong>/Usi","[b]\\1[/b]",$str['maintext']);


Разобрался. Всем спасибо.
 
 Top
singmen
Отправлено: 20 Февраля, 2013 - 13:31:52
Post Id


Гость


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


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




CODE (htmlphp):
скопировать код в буфер обмена
  1. $str['maintext'] = preg_replace("/<strong>(.+?)<\/strong>/Usi","[b]\\1[/b]",$str['maintext']);
  2.  
  3. $str['maintext'] = preg_replace("/<i>(.+?)<\/i>/Usi","[i]\\1[/i]",$str['maintext']);


Теперь <> стали появляться в поле, в чем может быть проблема?
Прикреплено изображение (Нажмите для увеличения)
6.jpg
 
 Top
NoPaper
Отправлено: 20 Февраля, 2013 - 15:09:21
Post Id



Посетитель


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


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




singmen пишет:


Теперь <> стали появляться в поле, в чем может быть проблема?

Эти знаки желательно экранизировать \> \<
 
 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