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
Форумы портала PHP.SU :: Версия для печати :: Запретить выставлять пробел после [2]
Форумы портала PHP.SU » » Вопросы новичков » Запретить выставлять пробел после

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

16. Gerb - 15 Октября, 2019 - 00:15:56 - перейти к сообщению
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]


Только родителя переводит, дочерний остается в прежнем виде.
17. Строитель - 15 Октября, 2019 - 00:19:03 - перейти к сообщению
Gerb пишет:
не работает, если есть вложенные теги
У вас в каждом посту появляется какое-то уточнение. Пишите сразу все требования в первом посту, всегда. Я например писал без учёта вложенности, и переписывать не имею никакого желания.
18. LIME - 15 Октября, 2019 - 00:45:08 - перейти к сообщению
Вся эта штука делается не регулярками по хорошему. Тут уже нужен целый синтаксический анализатор. Есть упрощенные языки разметки типа markdown. Есть готовые визивиги на js типа ckeditor, хотя это видимо не то. Для чего это всё надо? В чем задача?

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

Ну а если всеже решите делать регулярками можем потом устроить веселый конкурс "Найди XSS".
Причем примерно каждые полгода можем проводить. Ну по мере внесения изменений в код.
19. Gerb - 15 Октября, 2019 - 01:55:54 - перейти к сообщению
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>

 

Powered by ExBB FM 1.0 RC1