2011-11-24 44 views
0

我有这个问题:如何检查每个HTML标签是否关闭?

用户可以添加一个HTML描述,它会显示在他的个人资料;当我显示用户列表时,我也希望显示这个描述。
因为它可能太长,我会限制它到一个固定的长度,但这样做,我可以打破HTML语法留下一些标签打开。

我该如何检查everthing是否正常,如果需要,关闭任何打开的标签?

回答

2

@ tampe125这不是我的代码,但它看起来像是有效的。

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

* * @param string $html 

* @return string 

* @author Milian <[email protected]> 

*/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

谢谢,我会尝试尽快 – tampe125

+0

不客气,它似乎会工作,虽然我还没有尝试过。我从http://www.kirupa.com/forum/showthread.php?343478获取答案 - Close-all-open-HTML-tag – Boundless

+0

这是否解决了问题? – Boundless

1

这是一个简单的javascript验证程序,它执行基本标记检查。 XML validator

唯一的问题是,它会停在第一个错误,所以你需要解决一次一个问题。