이 기사의 예에서는 PHP에서 닫힌 HTML 태그 완성을 설명합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.
기사를 발췌할 때 HTML 콘텐츠가 나타나는 경우 가로채는 기사로 끝나지 않는 HTML 태그가 있는 경우가 많습니다. 이 경우 페이지 스타일 혼동 문제가 발생하게 됩니다. 이때 필요한 것은 누락된 종료 태그를 일괄적으로 추가하는 것입니다. www.php.net 공식 홈페이지에서 아래와 같이 좀 더 다루기 쉬운 기능을 봤습니다.
function CloseTags($html) { // strip fraction of open or close tag from end (e.g. if we take first x characters, we might cut off a tag at the end!) $html = preg_replace('/<[^>]*$/','',$html); // ending with fraction of open tag // put open tags into an array preg_match_all('#<([a-z]+)(?: .*)?(?<![/|/ ])>#iU', $html, $result); $opentags = $result[1]; // put all closed tags into an array preg_match_all('#</([a-z]+)>#iU', $html, $result); $closetags = $result[1]; $len_opened = count($opentags); // if all tags are closed, we can return if (count($closetags) == $len_opened) { return $html; } // close tags in reverse order that they were opened $opentags = array_reverse($opentags); // self closing tags $sc = array('br','input','img','hr','meta','link'); // ,'frame','iframe','param','area','base','basefont','col' // should not skip tags that can have content inside! for ($i=0; $i < $len_opened; $i++) { $ot = strtolower($opentags[$i]); if (!in_array($opentags[$i], $closetags) && !in_array($ot,$sc)) { $html .= '</'.$opentags[$i].'>'; } else { unset($closetags[array_search($opentags[$i], $closetags)]); } } return $html; }
테스트 결과:
<?php $content = '<div><p><span>越发忙碌的你,是否想给自己放个假?专注工作的你,是否还记得上一次锻炼是什么时候?优伴户外旅行,给你不一样的旅行体验:给心自由,便处处都是风景!'; echo CloseTags($content); /* 返回的结果是: <div><p><span> 越发忙碌的你,是否想给自己放个假?专注工作的你,是否还记得上一次锻炼是什么时候?优伴户外旅行,给你不一样的旅行体验:给心自由,便处处都是风景!</span></p></div> */ ?>
더 많은 PHP 관련 콘텐츠에 관심이 있는 독자는 이 사이트의 특별 주제를 확인할 수 있습니다. "PHP 운영 오피스 문서 기술 요약(워드, 엑셀, 액세스, ppt 포함)", " php 날짜 시간 사용법 요약", "php 객체 지향 프로그래밍 입문 튜토리얼", "php 문자열(문자열) 사용법 요약", "php mysql 데이터베이스 작업 입문 튜토리얼 " 및 " 일반적인 PHP 데이터베이스 작업 기술 요약 "
이 기사가 PHP 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.