| Autor | Zpráva | ||
|---|---|---|---|
| filio Profil * |
#1 · Zasláno: 16. 10. 2012, 23:33:07
Zdravím,
opravdu, už si nevím rady. S XPath teprve začínám. Nikde na internetu to nemůžu dohledat. Jak získat jednu proměnnou to vím, ale jak jich získat více z $nodelist to nevím. Potřeboval bych načíst data z HTML do proměnných: $nadpis, $textBold, $link. Mockrát děkuji za každou radu. <?php
$html = <<<HTML
<html>
<head>
<title>A test page</title>
</head>
<body>
<div class='item'>
<div class='title'><h3>1. nadpis<h3><title>
<b>1. Text bold</b>
<a href="http://www.example.com">1. link</a>
</div>
<div class='item'>
<div class='title'><h3>2. nadpis <h3><title>
<b>2. Text bold</b>
<a href="http://www.example.com">2. link</a>
</div>
</body>
</html>
HTML;
$htmlDoc = new DOMDocument();
$htmlDoc->loadHTML($html);
$xpath = new DOMXPath($htmlDoc);
$nodelist = $xpath->query("//div[@class='item']");
foreach ($nodelist as $n){
echo $n->nodeValue."<br />";
//echo $nadpis;
//echo $textBold;
//echo $link;
}
?> |
||
| filio Profil * |
#2 · Zasláno: 17. 10. 2012, 15:19:08
Tak nakonec mi poradil kolega. Chyba byla také v HTML, které se mělo parsovat na místo <title> má být samozřejmě </div>.
Funkční řešení přikládám níže. V Diskusi můžete zamknout. <?php
$html = <<<HTML
<html>
<head>
<title>A test page</title>
</head>
<body>
<div class='item'>
<div class='title'><h3>1. nadpis<h3></div>
<b>1. Text bold</b>
<a href="http://www.example.com">1. link</a>
</div>
<div class='item'>
<div class='title'><h3>2. nadpis <h3></div>
<b>2. Text bold</b>
<a href="http://www.example.com">2. link</a>
</div>
</body>
</html>
HTML;
$htmlDoc = new DOMDocument();
$htmlDoc->loadHTML($html);
$xpath = new DOMXPath($htmlDoc);
$nodelist = $xpath->query("//div[@class='item']");
foreach ($nodelist as $n){
$nadpis = $xpath->evaluate('string(div[@class="title"]/h3)', $n);
$textBold = $xpath->evaluate('string(b[1])', $n);
$link = $xpath->evaluate('string(a[1]/@href)', $n);
echo $nadpis.'<br /> ';
echo $textBold.'<br />';
echo $link.'<br /> ';
}
?> |
||
|
Časová prodleva: 14 let
|
|||
0