Szukaj…


Analizowanie HTML z ciągu znaków

PHP implementuje parser zgodny z DOM Level 2 , umożliwiający pracę z HTML przy użyciu znanych metod, takich jak getElementById() lub appendChild() .

$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;

Wyjścia:

Hello, World!

Zauważ, że PHP będzie emitować ostrzeżenia o wszelkich problemach z HTML, szczególnie jeśli importujesz fragment dokumentu. Aby uniknąć tych ostrzeżeń, powiedz bibliotece DOM (libxml), aby obsługiwała własne błędy, wywołując libxml_use_internal_errors() przed importem HTML. Następnie możesz użyć libxml_get_errors() do obsługi błędów w razie potrzeby.

Korzystanie z 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;

Wyjścia:

Hello, World!

SimpleXML

Prezentacja

  • SimpleXML to biblioteka PHP, która zapewnia łatwy sposób pracy z dokumentami XML (w szczególności odczytywanie i iterowanie danych XML).

  • Jedynym ograniczeniem jest to, że dokument XML musi być dobrze sformułowany.

Analizowanie XML przy użyciu podejścia proceduralnego

// 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

Analizowanie XML przy użyciu metody OOP

// $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.

Dostęp do dzieci i atrybutów

  • Kiedy SimpleXML analizuje dokument XML, konwertuje wszystkie jego elementy XML lub węzły na właściwości wynikowego obiektu SimpleXMLElement
  • Ponadto konwertuje atrybuty XML na tablicę asocjacyjną, do której można uzyskać dostęp z właściwości, do której należą.

Kiedy znasz ich imiona:

$library = new SimpleXMLElement('library.xml', NULL, true);
foreach ($library->book as $book){
    echo $book['isbn'];
    echo $book->title;
    echo $book->author;
    echo $book->publisher;
}
  • Główną wadą tego podejścia jest konieczność znajomości nazw każdego elementu i atrybutu w dokumencie XML.

Jeśli nie znasz ich nazw (lub nie chcesz ich znać):

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow