PHP закрыть все открытые теги26 October 2008, 19:10:24 |
На случай, если мы доверяем пользовательскому коду – но он может порушить нам структуру страницы, и надо его слегка поправить.
Да, не забудьте проверку на <SCRIPT>, а то можно и XSS словить…
Функция закрывает все открытые HTML теги.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | function close_dangling_tags($html){ #put all opened tags into an array preg_match_all("#<([a-z]+)( .*)?(?!/)>#iU",$html,$result); $openedtags=$result[1]; #put all closed tags into an array preg_match_all("#</([a-z]+)>#iU",$html,$result); $closedtags=$result[1]; $len_opened = count($openedtags); # all tags are closed if(count($closedtags) == $len_opened){ return $html; } $openedtags = array_reverse($openedtags); # close tags for($i=0;$i < $len_opened;$i++) { if (!in_array($openedtags[$i],$closedtags)){ $html .= '</'.$openedtags[$i].'>'; } else { unset($closedtags[array_search($openedtags[$i],$closedtags)]); } } return $html; } |
Украла у .
| Tags: PHP | Comments [ 15 ] |

Subscribe? Sure? What for?

26 October at 7:36 pm
боянно :) когда-то и сам такую написал
27 January at 11:08 pm
А мне пох что боянно, мне как раз такое надо и быстро, а писать реально впадло. Так что респект автору.
11 February at 3:58 pm
И мне пригодилась – респект автору. правда баг есть в функции – например если я осталвлю открытыми для дива, закроется только один :) И если забить на этот баг то функцию можно оптимизировать, если заменить
$closedtags=$result[1];
на
$closedtags=array_unique($result[1]);
и так же для открывающихся тегов
На правах рекламы :)
11 February at 4:46 pm
Спасибо за фикс =)
Только вот ссылки всё равно маскируются ^_^
18 November at 7:46 am
Добрый день!
Куда вставляется этот код?
Спасибо!
18 November at 7:11 pm
Мм. Где надо применить функцию – там и вставляете)
18 November at 7:28 pm
у меня публикуются статьи в автоматическом режиме и при публикации теги становятся открытыми. Сайт на Друпал и публикуется статья через xmlrpc.php
Я не программист :) поэтому и не знаю, может в этот файл вставлять?
Спасибо!
18 November at 7:34 pm
Если не программист, то нужно искать программиста, чтобы сделал)
Даже если угадаете файл, в который пихать функцию, место, где её ставить, всё равно никто не скажет))
18 November at 7:44 pm
На сколько я знаю место в PHP не имеет значение , если место правильное :)
18 November at 7:54 pm
Тогда я плохо знаю PHP Ж`(
1 March at 7:38 pm
месторасположение функции не имеет значения, главное чтобы она объявлялась раньше чем вызывается))
30 January at 9:33 pm
Нет :D всё равно, раньше или позже.
А вот то что надо знать куда подставить вызов функции – это да :)
7 May at 1:49 pm
Уже второй день ищу подобную ф-цию, но что-то не получается если я к примеру ввожу такой код:
12321313
12321313
12321313
12321313
12321313
и закрывается 5-ть раз после
12321313
12321313
12321313
12321313
12321313
7 May at 1:50 pm
блин хрень какая получилась :(
21 May at 8:28 am
Отпишите со странички http://jehy.ru/mail.html