PHP DOMhtml5 태그 오류/경고
HTML5 코드를 해석하여 코드 내에서 속성/값을 설정하려고 했는데 DOMDocument(PHP5.3)는 다음과 같은 태그를 지원하지 않는 것 같습니다.<nav>그리고.<section>.
이것을 PHP에서 HTML로 해석하여 코드를 조작할 수 있는 방법이 있습니까?
복제할 코드:
<?php
$dom = new DOMDocument();
$dom->loadHTML("<!DOCTYPE HTML>
<html><head><title>test</title></head>
<body>
<nav>
<ul>
<li>first
<li>second
</ul>
</nav>
<section>
...
</section>
</body>
</html>");
에러
경고: DOMDocument::loadHTML(): 엔티티, 줄: /home/wbkrnl/public_html/new-mvc/1.php에서 태그 탐색이 비활성화됩니다.
경고: DOMDocument::loadHTML(): 엔티티의 태그 섹션이 유효하지 않습니다.행: 17행의 /home/wbkrnl/public_html/new-mvc/1.php 10
아니요, 사용할 특정 문서를 지정하거나 기존 문서의 요구 사항을 수정할 수 없습니다.
가장 효과적인 솔루션은 에러 리포트를 무효로 하는 것입니다.
$dom = new DOMDocument;
libxml_use_internal_errors(true);
$dom->loadHTML('...');
libxml_clear_errors();
할 수도 있고
@$dom->loadHTML($htmlString);
파서에서 발생하는 오류를 필터링할 수 있습니다.다른 답변과 마찬가지로 화면에 대한 오류 보고를 해제한 다음 오류를 반복하고 원하는 항목만 표시합니다.
libxml_use_internal_errors(TRUE);
// Do your load here
$errors = libxml_get_errors();
foreach ($errors as $error)
{
/* @var $error LibXMLError */
}
여기 a가 있습니다.print_r()단일 오류의 경우:
LibXMLError Object
(
[level] => 2
[code] => 801
[column] => 17
[message] => Tag section invalid
[file] =>
[line] => 39
)
매칭에 의해message및/또는code, 이것들은 꽤 쉽게 걸러질 수 있습니다.
경고는 없애지만 오류는 없앨 수 있는 방법은 없는 것 같습니다.PHP에는 이 작업을 수행해야 하는 상수가 있지만 작동하지 않는 것 같습니다.동작해야 하지만 (버그?) 때문에 동작하지 않는 것은 다음과 같습니다.
$doc=new DOMDocument();
$doc->loadHTML("<tagthatdoesnotexist><h1>Hi</h1></tagthatdoesnotexist>", LIBXML_NOWARNING );
echo $doc->saveHTML();
http://php.net/manual/en/libxml.constants.php
이 방법은 효과가 있었습니다.
$html = file_get_contents($url);
$search = array("<header>", "</header>", "<nav>", "</nav>", "<section>", "</section>");
$replace = array("<div>", "</div>","<div>", "</div>", "<div>", "</div>");
$html = str_replace($search, $replace, $html);
$dom = new DOMDocument();
$dom->loadHTML($html);
헤더 태그가 필요한 경우 div 태그로 헤더를 변경하고 ID를 사용합니다.예:
$search = array("<header>", "</header>");
$replace = array("<div id='header1'>", "</div>");
최선의 해결책은 아니지만 상황에 따라서는 유용할 수 있습니다.
행운을 빌어요.
HTML5 태그는 거의 항상 id, class 등의 속성을 사용합니다.교환 코드는 다음과 같습니다.
$html = file_get_contents($url);
$search = array(
"<header", "</header>",
"<nav", "</nav>",
"<section", "</section>",
"<article", "</article>",
"<footer", "</footer>",
"<aside", "</aside>",
"<noindex", "</noindex>",
);
$replace = array(
"<div", "</div>",
"<div", "</div>",
"<div", "</div>",
"<div", "</div>",
"<div", "</div>",
"<div", "</div>",
"<div", "</div>",
);
$html = str_replace($search, $replace, $html);
$dom = new DOMDocument();
$dom->loadHTML($html);
언급URL : https://stackoverflow.com/questions/6090667/php-domdocument-errors-warnings-on-html5-tags
'programing' 카테고리의 다른 글
| API 호출을 통해 vuex에 새 개체를 추가하고 이미지 URL을 저장하는 방법 (0) | 2022.11.26 |
|---|---|
| sql에서 join을 사용하여 like를 사용하는 방법 (0) | 2022.11.26 |
| JavaScript 객체의 컨스트럭터 (0) | 2022.11.07 |
| PHP를 사용하여 암호를 암호화하고 해독하는 가장 좋은 방법? (0) | 2022.11.07 |
| MySQL의 FOR UPDATE 잠금을 사용할 때 정확히 잠긴 것은 무엇입니까? (0) | 2022.11.07 |