使用正則表達式來檢測標簽是否關閉
function check_html($html) { preg_match_all("/<([a-zA-Z0-9]+)\\s*[^\\/>]*>/",$html,$start_tags); preg_match_all("/<\\/([a-zA-Z0-9]+)>/", $html, $end_tags); if(count($start_tags[1]) != count($end_tags[1])) return false; for($i = 0; $i < count($start_tags[1]); $i++) { if(!in_array($start_tags[1][$i], $end_tags[1])) return false; } return true; }
解釋:
/<([a-zA-Z0-9]+)\\s*[^\\/>]*>/這個模式是用來匹配HTML的標記(如:<head>、<div>、<div id="main">等等,但是除了<br/>這種)的,并且在$start_tags保持著標簽的名字(如:head、div等)。而/<\\/([a-zA-Z0-9]+)>/這個模式是用來匹配閉合的HTML標記(如:</head>,</div>等)的。并且在$end_tags中保持這閉合的標簽名。然后我們用count($start_tags[1]) != count($end_tags[1])這個條件語句來判斷開始的標記跟閉合的標記是否相等,不相等就說明沒閉合。最后用in_array($start_tags[1][$i], $end_tags[1])來判斷開始標跟閉合的標記是否相等。至此,我們就完成了HTML的匹配了!
本文由用戶 en9 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!