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 :: Запретить выставлять пробел после [2]

 PHP.SU

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


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

> Без описания
Gerb
Отправлено: 15 Октября, 2019 - 00:15:56
Post Id


Новичок


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


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




PHP:
скопировать код в буфер обмена
  1. '~\[(right|center|left)=(\d+)] \s* (.+?) \s* \[/\1]~xis'


Увы но такой вариант не работает, если есть вложенные теги

CODE (html):
скопировать код в буфер обмена
  1. [right=50]
  2. [right=50]
  3.  sss
  4. [/right]
  5.  Выравнивание по правому краю
  6. [/right]


Только родителя переводит, дочерний остается в прежнем виде.
 
 Top
Строитель Модератор
Отправлено: 15 Октября, 2019 - 00:19:03
Post Id



Участник


Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014  
Откуда: Украина


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




Gerb пишет:
не работает, если есть вложенные теги
У вас в каждом посту появляется какое-то уточнение. Пишите сразу все требования в первом посту, всегда. Я например писал без учёта вложенности, и переписывать не имею никакого желания.
 
 Top
LIME
Отправлено: 15 Октября, 2019 - 00:45:08
Post Id


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


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


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




Вся эта штука делается не регулярками по хорошему. Тут уже нужен целый синтаксический анализатор. Есть упрощенные языки разметки типа markdown. Есть готовые визивиги на js типа ckeditor, хотя это видимо не то. Для чего это всё надо? В чем задача?

Если прям дословно решать, то самому ручками на лексемы разбивать, в стек заносить(гуглить "правильная скобочная последовательность стек"). Ну или как там у вас избы делаются. Конечно всегда остается вариант многократно пройтись, но Имхо это фи.

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

(Отредактировано автором: 15 Октября, 2019 - 01:13:00)

 
 Top
Gerb
Отправлено: 15 Октября, 2019 - 01:55:54
Post Id


Новичок


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


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




PHP:
скопировать код в буфер обмена
  1.  '#(?<!(?:ul\>|li\>)\])\r\n#i','#\<br/>\s*\</li>#i','#\<br/>\s*\</div>#i','#"\>\s*\<br/>#i','#ul\>\s*\<br/>#i',


Как все это объеденить в
'#(?<!(?:ul\>|li\>)\])\r\n#i'
(Добавление)
'#\<br/>\s*\</li>#i' меняем на '</li>'

То есть не выставлять перенос строки перед закрывающим тегом '</li>'
Аналогично перед </div>
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB