수색…


문자열에서 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