powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / не закрытые теги
8 сообщений из 33, страница 2 из 2
не закрытые теги
    #39461875
aliskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начну с начала. В бд лежит тело поста с бб-кодами. При выводе поста на страницу бб-коды преобразовываются в хтмл-разметку. Но если в теле поста имеются не закрытые ббшки, то после преобразования в хтмл, страница выводилась не корректно.

Напрмер в теле поста есть "од 89о кгшшрп хирный кой-то текст и открытый тег текс гшптгш"

Все содержимое страницы после преобразования этого открытого [B] в <b> будет иметть жирное офрмление.

Задача состояла в том, чтобы выловить эти открытые ТЕГИ и что-то с ними сделать...

Решение: Я как-бє понял что можно сделать. Можно и так, и сяк. Если не получится, то попробовать по другому. ГЛАВНОЕ - я же уже примерно знаю что нужно делать... Нужно воштобыонивстало :%) долбить эту скалу. НО...

Но я не кинулся "долбить и кнопкодавить", даже ничего на бумаге не начинал рисовать. Я иногда рисую алгоритмы на бумаге. Я начал думать %:) (я и раншье думал, я всегда думаю!). И вдруг на меня снизошла Великая Мудрость.

Я задал себе вопрос: Почему такая задача возникла? Может вернуться на шаг назад и подумать по-новому? Ну конечно ДА! Можно же преобразовывать только парные бб-коды в хтмл-теги!

Вот собственно и все: но на 100% я не уверен в правильности регулярки. Хотя все работает, все равно нужно протестировать.
В итоге для каждого тега (у меня их 8-12) есть такая регулярка:
Код: php
1.
2.
3.
4.
$pattern = '/([\s\S]*)(\[B\])([\s\S]*)(\[\/B\])([\s\S]*)/iU';
$replacement = '$1<b>$3</b>';
$str = preg_replace($pattern, $replacement, $str);
//это для [B]  - поставленную задачу решает. А пользоватеи пусьть сами убирают лишние бб-коды из поста.


Скрины прилагаються.
---
Великая Мудрость: Шаг назад может = 10 шагам вперёд.
Это что же было бы если бы я мучился с "парсированиями своей глупости*".
---
* - сам себе придумал лишнюю заморочку. Но я ее уже избежал,... хотя нужно убедиться что все работает.
---
Основная мысль написанного мной: Шаг назад может = 10 шагам вперёд.
...
Рейтинг: 0 / 0
не закрытые теги
    #39461876
aliskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
не закрытые теги
    #39461877
aliskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
не закрытые теги
    #39461881
aliskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergealiskin,

Вообще-то иногда помогает взять innerHTML 'этого тега - там всё будет коректно.

я не знаю что такое innerHTML. догадываюсь что это нечто из js, но я не знаю js.
...
Рейтинг: 0 / 0
не закрытые теги
    #39461883
aliskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в 8 пункте КУЧА ОТКРЫТЫХ ББ-КОДОВ, а не тегов.
...
Рейтинг: 0 / 0
не закрытые теги
    #39461890
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aliskin,

синтаксический анализатор с восстановлением после ошибок решает задачу.

грамматика BB-кодов - контекстно свободная, регулярные выражения не спасут.
...
Рейтинг: 0 / 0
не закрытые теги
    #39461891
aliskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилaliskin,
грамматика BB-кодов - контекстно свободная , регулярные выражения не спасут.

ЧТО Вы имеете в виду?
...
Рейтинг: 0 / 0
не закрытые теги
    #39461893
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aliskinЧТО Вы имеете в виду?
КС-грамматику. Основы синтаксического анализа
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / не закрытые теги
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]