我的 DOM 文档代码需要 SAX 解析器代码。
如果有人愿意为我提供相同的代码。
function flipkart_price_fetch($sel_image){
global $sel_image;
$price = file_get_contents("{$sel_image['flipkart_content']}");
$dom = new DOMDocument();
@$dom->loadHTML($price);
$divs = $dom->getElementsByTagName('span');
foreach($divs as $div){
if($div->getAttribute('class') == 'fk-font-verybig pprice fk-bold'){
echo $div->nodeValue;
}
}
}
答案 0 :(得分:0)
我不认为DOM是这里的性能损失,而是所有span
个元素节点的迭代。 DOMXpath允许使用Xpath表达式直接获取节点:
$dom = new DOMDocument();
@$dom->loadHTMLFile($sel_image['flipkart_content']);
$xpath = new DOMXpath($dom);
// this matches the node by the class name "pprice"
$price = $xpath->evaluate(
'string(.//span[contains(concat(" ", normalize-space(@class), " "), " pprice ")])'
);
echo $price;
在SO和/或Web上搜索Xpath。
您的来源中还有其他一些错误:
global $sel_image;
$sel_image
是函数参数,这里没有理由使它成为一个全局状态。
"{$sel_image['flipkart_content']}"
此字符串仅包含变量,直接使用变量$sel_image['flipkart_content']
或将其转换为字符串(string)$sel_image['flipkart_content']
$ price = file_get_contents(" {$ sel_image [' flipkart_content']}");
此处无需单独加载文件/网址 - 使用DOMDocument::loadHTMLFile()