graham23s
03-21-2010, 09:20 PM
Hi Guys,
I'm trying to loop through the ciontents of an html page using domDocument, i can get the results back great but it only retrieves 1 result (because i'm not using a foreach)
code:
<?php
if (isset($_GET['searchDeep']))
{
print $searchString;
// Deep search code
$searchString = str_replace( " ","+",$searchString);
$search_url = "http://www.site.com/mkplSearchResult.htm?dores=true&includeKeywords=$searchString&firstResult=50";
// make the cURL request to $search_url
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, 'Firefox (WindowsXP) - Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6');
curl_setopt($ch, CURLOPT_URL,$search_url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$html = curl_exec($ch);
if (!$html) {
echo "<p class=\"fcs-message-error\">cURL error:" . curl_error($ch) . " (Number " . curl_errno($ch).")</p>";
}
curl_close($ch);
// parse the html into a DOMDocument
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$paras = $xpath->query("//div[@id='results']//tr/td[@class='details']/h4/a");
$para = $paras->item(0);
$urlt = $para->textContent;
if($urlt == '' | $urlt == null) {
echo '<p class="fcs-message-error">No Deep search products found!</p>';
} else {
// Loop
foreach ($something as $something)
{
$url = $para->getAttribute('href');
$url = str_replace("zzzzz", "graham25s", $url);
$xpath = new DOMXPath($dom);
$paras = $xpath->query("//div[@id='results']//td[@class='details']//div[@class='description']");
$para = $paras->item(0);
$description = $para->textContent;
$xpath = new DOMXPath($dom);
$paras = $xpath->query("//div[@id='results']//td[@class='details']//h4/a");
$para = $paras->item(0);
$title = $para->textContent;
$link = '<a rel="nofollow" href="'.$url.'">'.$title.'</a><br />';
//print "<br/><strong>".$link."</strong><br/>".$description;
print $link;
}
}
}
?>
it's the foreach part i'm having trouble with i have put one in above where i think it should go, any help would be appreciated
thanks a lot guys
Graham
I'm trying to loop through the ciontents of an html page using domDocument, i can get the results back great but it only retrieves 1 result (because i'm not using a foreach)
code:
<?php
if (isset($_GET['searchDeep']))
{
print $searchString;
// Deep search code
$searchString = str_replace( " ","+",$searchString);
$search_url = "http://www.site.com/mkplSearchResult.htm?dores=true&includeKeywords=$searchString&firstResult=50";
// make the cURL request to $search_url
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, 'Firefox (WindowsXP) - Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6');
curl_setopt($ch, CURLOPT_URL,$search_url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$html = curl_exec($ch);
if (!$html) {
echo "<p class=\"fcs-message-error\">cURL error:" . curl_error($ch) . " (Number " . curl_errno($ch).")</p>";
}
curl_close($ch);
// parse the html into a DOMDocument
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$paras = $xpath->query("//div[@id='results']//tr/td[@class='details']/h4/a");
$para = $paras->item(0);
$urlt = $para->textContent;
if($urlt == '' | $urlt == null) {
echo '<p class="fcs-message-error">No Deep search products found!</p>';
} else {
// Loop
foreach ($something as $something)
{
$url = $para->getAttribute('href');
$url = str_replace("zzzzz", "graham25s", $url);
$xpath = new DOMXPath($dom);
$paras = $xpath->query("//div[@id='results']//td[@class='details']//div[@class='description']");
$para = $paras->item(0);
$description = $para->textContent;
$xpath = new DOMXPath($dom);
$paras = $xpath->query("//div[@id='results']//td[@class='details']//h4/a");
$para = $paras->item(0);
$title = $para->textContent;
$link = '<a rel="nofollow" href="'.$url.'">'.$title.'</a><br />';
//print "<br/><strong>".$link."</strong><br/>".$description;
print $link;
}
}
}
?>
it's the foreach part i'm having trouble with i have put one in above where i think it should go, any help would be appreciated
thanks a lot guys
Graham