PHP
HTML 구문 분석
수색…
문자열에서 HTML 파싱하기
PHP는 DOM Level 2 호환 파서를 구현하여 getElementById()
또는 appendChild()
와 같은 익숙한 메소드를 사용하여 HTML로 작업 할 수 있습니다.
$html = '<html><body><span id="text">Hello, World!</span></body></html>';
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html);
echo $doc->getElementById("text")->textContent;
출력 :
Hello, World!
PHP는 특히 HTML 문서 조각을 가져 오는 경우 HTML에 대한 모든 문제에 대한 경고를 표시합니다. 이러한 경고를 피하려면 HTML을 가져 오기 전에 libxml_use_internal_errors()
를 호출하여 자체 오류를 처리하도록 DOM 라이브러리 (libxml)에 libxml_use_internal_errors()
하십시오. 그런 다음 libxml_get_errors()
를 사용하여 필요한 경우 오류를 처리 할 수 있습니다.
XPath 사용하기
$html = '<html><body><span class="text">Hello, World!</span></body></html>';
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$span = $xpath->query("//span[@class='text']")->item(0);
echo $span->textContent;
출력 :
Hello, World!
SimpleXML
표시
SimpleXML은 XML 문서 (특히 XML 데이터 읽기 및 반복)를 사용하는 쉬운 방법을 제공하는 PHP 라이브러리입니다.
유일한 제한은 XML 문서가 올바른 형식이어야한다는 것입니다.
절차 적 접근 방식을 사용하여 XML 구문 분석하기
// Load an XML string
$xmlstr = file_get_contents('library.xml');
$library = simplexml_load_string($xmlstr);
// Load an XML file
$library = simplexml_load_file('library.xml');
// You can load a local file path or a valid URL (if allow_url_fopen is set to "On" in php.ini
OOP 방식을 사용하여 XML 구문 분석하기
// $isPathToFile: it informs the constructor that the 1st argument represents the path to a file,
// rather than a string that contains 1the XML data itself.
// Load an XML string
$xmlstr = file_get_contents('library.xml');
$library = new SimpleXMLElement($xmlstr);
// Load an XML file
$library = new SimpleXMLElement('library.xml', NULL, true);
// $isPathToFile: it informs the constructor that the first argument represents the path to a file, rather than a string that contains 1the XML data itself.
어린이 및 속성에 액세스
- SimpleXML은 XML 문서를 파싱 할 때 모든 XML 요소 또는 노드를 결과 SimpleXMLElement 객체의 속성으로 변환합니다.
- 또한 XML 속성을 속해있는 속성에서 액세스 할 수있는 연관 배열로 변환합니다.
당신이 그들의 이름을 알 때 :
$library = new SimpleXMLElement('library.xml', NULL, true);
foreach ($library->book as $book){
echo $book['isbn'];
echo $book->title;
echo $book->author;
echo $book->publisher;
}
- 이 접근법의 가장 큰 단점은 XML 문서의 모든 요소와 속성의 이름을 알아야한다는 것입니다.
당신이 그들의 이름을 모를 때 (또는 당신이 그들을 알고 싶지 않을 때) :
foreach ($library->children() as $child){
echo $child->getName();
// Get attributes of this element
foreach ($child->attributes() as $attr){
echo ' ' . $attr->getName() . ': ' . $attr;
}
// Get children
foreach ($child->children() as $subchild){
echo ' ' . $subchild->getName() . ': ' . $subchild;
}
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow