自动关闭HTML标记

时间:2012-04-03 23:45:11

标签: php verification html

我允许用户使用<pre></pre>标签在评论和文章中显示代码,但我遇到了一个我正在努力解决的问题。当用户无法关闭HTML标记时,例如:

    <pre>
        <html>
            <head>

            </head>
    </pre>

评论似乎是空白的。我正在寻找的是某种功能,它会自动关闭用户错过的任何HTML标签。

提前致谢。

2 个答案:

答案 0 :(得分:2)

如果你不使用框架,它会变得讨厌,但你的勇气是值得赞赏的。希望这将是朝着正确方向的推动。

我能想到的最简单的非框架解决方案是在从用户解析字符串时使用堆栈来推送和弹出标签。

伪代码

userData = getUserData();
stack = array();
loop (line in userData) {
   matches = search for "<*>"; // may have multiple on one line
   loop (match in matches) {
      tagName = getTagNameFrom(match);
      if ("/" is not found) {
         push tagName on stack;
      } else if ("/" is found) {
         pop tagName off stack; 
         // There was an error if the stack is
         // empty or the tagName that was popped was not
         // the same.
      }
   }
}

这绝不是全面的,这里真的推荐一个框架,但希望它可以帮到你一点。

答案 1 :(得分:0)

您可以使用HTML Tidy来解决此问题。要自动查找和关闭未关闭的标记。

Project Page