Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Mikhail Shell
50 / 50 / 39
Регистрация: 15.11.2014
Сообщений: 626
1

Проверка на правильность мест закрытия тегов

04.02.2015, 21:32. Просмотров 587. Ответов 5
Метки нет (Все метки)

Есть textarea в которую можно вводить только определенные html теги. Есть проверка на разрешенные и неразрешенные теги (введенные). Затем "закрытость тегов" (разрешенных). И сейчас у меня созрела мысль сделать не просто проверку на закрывающу пару html тегов, а еще правильное место написания.
Покажу пример, чтобы было понятнее.
Есть переменная $text, и ей присвоено значение вводимого с textarea.
Человек написал примерно такую белеберду:
PHP
1
$text == "texttexttexttexttexttexttexttexttext<b>text<em>texttext</b>texttext</em>"
То бишь, пользователь открыл тег в одном теге, а закрыл в другом - ерунда получится.
Некоторые элементы верстки сайта "полетят".
Подскажите пожалуйста, как реализовать выше сказанное! Может ли это выглядеть следующим образом?
PHP
1
2
3
if(какой_то_тег_закрылся_не_там_где_надо){
return exit("<teg> открылся в одном теге, а закрылся в другом."); // <teg> - должно выводиться название этого етого тега (который закрылся в неположеном месте)
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2015, 21:32
Ответы с готовыми решениями:

Проверка тегов на закрытие
Как сделать проверку на &quot;закрытость&quot; тегов вводимых в textarea. Изначально есть...

Проверка на правильность заполнения полей формы
&lt;html&gt; &lt;head&gt; &lt;title&gt; &lt;/title&gt; &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot;...

Проверка полей формы на правильность заполнения
В общем есть Landing Page, в нем есть обратные формы связи. В принципе они...

Форма обратной связи. Проверка на правильность заполнения полей
Здравствуйте в PHP я совсем не шарю. Помогите пожалуйста. Форма обратной связи...

Проверка на правильность заполения полей
Как проверить форму на правильность заполнения полей...Например мне нужно...

5
Fresh_MaN
1 / 1 / 2
Регистрация: 20.10.2011
Сообщений: 129
05.02.2015, 06:52 2
создаешь переменную-стек, записываешь туда открывающиеся теги. Затем, когда встречаешь закрывающийся тег, проверяешь, последний элемент, запушенный в стек является таким же тегом? Если да, то pop и двигаешься дальше. Если нет - то сообщение об ошибке

Добавлено через 3 минуты
Не забыть сделать проверку на теги, которым не нужен закрывающий тег. Если это он, то него даже не надо пушить в стек

Добавлено через 1 минуту
А если пойти еще дальше, то не забыть сделать проверку для тегов, внутри которых не может быть других тегов, типа h1 и т.д.
0
Mikhail Shell
50 / 50 / 39
Регистрация: 15.11.2014
Сообщений: 626
05.02.2015, 08:32  [ТС] 3
Цитата Сообщение от Fresh_MaN Посмотреть сообщение
создаешь переменную-стек, записываешь туда открывающиеся теги.
Fresh_MaN, я так понял массив нужно задать:
PHP
1
$steck = array("<ol>", "<ul>", "<li>", "<em>", "<u>", "<b>");
Да? Или как?
0
Fresh_MaN
1 / 1 / 2
Регистрация: 20.10.2011
Сообщений: 129
05.02.2015, 08:50 4
Mikhail Shell, не совсем. Грубо говоря, из текста, поданного в textarea вычленяешь теги в отдельный массив. Потом по-очереди загоняешь открывающиеся в $stack с помощью array_push. А закрывающиеся сравниваешь с $stack[count($stack)] (Последний запушенный элемент). Если это такой же тег, только открывающийся, делаешь array_pop, если другой - то выдаешь ошибку. Если на вход в стек попадает тег, не требующий закрытия, типа br, то его в стек не пишешь
0
Mikhail Shell
50 / 50 / 39
Регистрация: 15.11.2014
Сообщений: 626
05.02.2015, 08:53  [ТС] 5
Цитата Сообщение от Fresh_MaN Посмотреть сообщение
в textarea вычленяешь теги в отдельный массив.
Fresh_MaN, это случайно не команда strip_tags?
То бишь
PHP
1
$steck = strip_tags($_POST['text'], "<ol><ul><li><em><u><b>");
0
Fresh_MaN
1 / 1 / 2
Регистрация: 20.10.2011
Сообщений: 129
05.02.2015, 09:31 6
Mikhail Shell, strip_tags, если мне память не изменяет, наоборот удаляет теги из текста. По синтаксису, к сожалению, не подскажу - сам на память почти ничего не помню из php. Суть в том, что сначала надо написать функцию, которая на вход получит $_POST['text'], затем будет вычленять по-порядку все теги в стек. А по поводу функции самой - split тебе в помощь. Ну и php.net
0
05.02.2015, 09:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2015, 09:31

Система тегов, облако тегов
Здравствуйте. Очень интересно знать как разработать и заставить функционировать...

Проверка на правильность заполнения даты
Страница с html-формой со следующими полями: Фамилия Имя; адрес...

Проверка на правильность заполнения поля в форме
Подскажите что дописать, чтобы при проверке поля телефон были разрешены только...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru