Как я могу проверить, все ли HTML-теги закрыты? - PullRequest
0 голосов
/ 24 ноября 2011

У меня есть эта проблема:

пользователь может добавить описание HTML, и оно будет показано в его профиле;когда я показываю список пользователей, я бы тоже хотел показать это описание.
, поскольку оно может быть слишком длинным, я собираюсь ограничить его до фиксированной длины, но при этом я могу нарушить синтаксис HTML, оставивнекоторые теги открыты.

как я могу проверить, все ли в порядке, и, если необходимо, закрыть любой открытый тег?

Ответы [ 2 ]

1 голос
/ 24 ноября 2011

@ tampe125 Это не мой код, но похоже, что он работает.

  <?php  /** * close all open xhtml tags at the end of the string

 * * @param string $html

 * @return string

 * @author Milian <mail@mili.de>

 */function closetags($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;}  ?>
0 голосов
/ 03 июня 2013

Это простой валидатор JavaScript, который выполняет базовую проверку тегов. XML-валидатор

Единственная проблема заключается в том, что она остановится на первой ошибке, поэтому вам нужно работать с проблемами по одному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...