You have a problem with two parts.
- Upload tag tag to XML document
- Retrieving Data from XML
Loading data in XML
, XML, HTML . , DOMDocument ( ) HTML. UTF-8 , , .
$data = '<French><li><span class="pull-right">25 GB</span>Espace disque</French><English><li><span class="pull-right">25 GB</span>Disk Space</English>
<French><li><span class="pull-right">YES</span>PHP 5, MySQL 5</French><English><li><span class="pull-right">YES</span>PHP 5, MySQL 5</English>
<French><li><span class="pull-right">100</span>Bases de données</French><English><li><span class="pull-right">100</span>Databases</English>
<French><li><span class="pull-right">∞</span>E-Mails</French><English><li><span class="pull-right">∞</span>E-mails</English>';
$html_data =
'<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
<body>'.$data.'</body>';
libxml_use_internal_errors(TRUE);
$dom = new DOMDocument();
$dom->loadHtml($html_data);
$dom->formatOutput = TRUE;
echo $dom->saveXml();
:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<body>
<french>
<li><span class="pull-right">25 GB</span>Espace disque</li>
</french>
<english>
<li><span class="pull-right">25 GB</span>Disk Space</li>
</english>
<french>
<li><span class="pull-right">YES</span>PHP 5, MySQL 5</li>
</french>
<english>
<li><span class="pull-right">YES</span>PHP 5, MySQL 5</li>
</english>
...
</body>
</html>
, , . html body, , .
XML
, DOM, XPath .
- body SimpleXML:
$xpath = new DOMXpath($dom);
$root = simplexml_import_dom($xpath->evaluate('/html/body')->item(0));
var_dump($root);
:
object(SimpleXMLElement)#4 (2) {
["french"]=>
array(4) {
[0]=>
object(SimpleXMLElement)#3 (1) {
["li"]=>
object(SimpleXMLElement)#12 (1) {
["span"]=>
string(5) "25 GB"
}
}
...
}
["english"]=>
array(4) {
[0]=>
object(SimpleXMLElement)#5 (1) {
["li"]=>
object(SimpleXMLElement)#12 (1) {
["span"]=>
string(5) "25 GB"
}
}
...
HTML:
$xpath = new DOMXpath($dom);
$string = '';
foreach ($xpath->evaluate('/html/body/*[name() = "english"]/*') as $node) {
$string .= $dom->saveHtml($node);
}
echo $string;
:
<li>
<span class="pull-right">25 GB</span>Disk Space</li><li>
<span class="pull-right">YES</span>PHP 5, MySQL 5</li><li>
<span class="pull-right">100</span>Databases</li><li>
<span class="pull-right">∞</span>E-mails</li>