현재 HTML을 JSON으로 변환 할 수 있습니다. 함수 element_to_obj
으로 html을 파싱하고 html 내용으로 json 객체를 가져올 수 있습니다. 주요 관심사 : json 객체에서 href
태그의 값만 반환하고 다른 모든 태그는 무시할 수 있습니까?JSON에 HTML - href 속성 태그 만 추출
function html_to_obj($html) {
$dom = new DOMDocument();
$dom->loadHTML($html);
return element_to_obj($dom->documentElement);
}
function element_to_obj($element) {
$obj = array("tag" => $element->tagName);
foreach ($element->attributes as $attribute) {
$obj[$attribute->name] = $attribute->value;
}
foreach ($element->childNodes as $subElement) {
if ($subElement->nodeType == XML_TEXT_NODE) {
$obj["html"] = $subElement->wholeText;
}
else {
$obj["children"][] = element_to_obj($subElement);
}
}
return $obj;
}
$html = <<<EOF
<!DOCTYPE html>
<html lang="en">
<head>
<title> This is a test </title>
</head>
<body>
<h1> Go to a site? </h1>
<ul>
<li> <a href="http://example.com">Some Site</a> </li>
<li> <a href="http://example.com">Some Site</a> </li>
</ul>
<h1> Other sites to visit: </h1>
<div><a href="http://example.com">Some Site</a></div>
<div><a href="http://example.com">Some Site</a></div>
<div><a href="http://example.com">Some Site</a></div>
<div><a href="http://example.com">Some Site</a></div>
</body>
</html>
EOF;
header("Content-Type: text/plain");
echo json_encode(html_to_obj($html), JSON_PRETTY_PRINT);
'if' 문을 사용하여 속성 이름을 확인하고'href '가 아닌 경우 건너 뜁니다. – Barmar
그렇다면 그녀는 아무런 관심이없는 다른 모든 노드를 검사하게 될 것이며 일부 페이지는 꽤 클 수 있습니다. 따라서이 불필요한 것들을 모두 처리하는 데 오랜 시간이 걸릴 것입니다. 이 경우 getElementsByTagName을 사용하면 트릭을 수행해야합니다. 나는 또한 체크 아웃'python 치료'에 제안 할 수있다 – gxela