PHP / DOMDocument - 我如何获得没有特定类的元素

时间:2015-12-22 21:24:56

标签: php domdocument

这是我目前使用的代码:

$urlIn1 = "http://www.sportsdirect.com/slazenger-mens-canvas-shoes-246033?colcode=24603325";
libxml_use_internal_errors(true); 
$docIn1 = new DOMDocument();
$docIn1->loadHTMLFile($urlIn1);

$docIn1->preserveWhiteSpace = false;
$docIn1->formatOutput = true;

$xpathIn1 = new DOMXpath($docIn1);
$Price = $xpathIn1->query('//span[@id="dnn_ctr103511_ViewTemplate_ctl00_ctl07_ctl01_lblSellingPrice"]')->item(0)->nodeValue;

echo $Price;

使用此代码我echo的价格。

我的问题是:

如何从ID为dnn_ctr103511_ViewTemplate_ctl00_ctl09_sizeDdl的选择菜单中的选项中获取所有值,其中具有class='greyOut'

从选择菜单中的选项中获取所有值后,我必须将它们格式化为一行,如下所示。

预期的最终结果:

7 (41), 7.5 (41.5), 8 (42), 8.5 (42.5), 9 (43), 9.5 (43.5), 10 (44), 11 (45), 12 (46)

1 个答案:

答案 0 :(得分:0)

我认为您可以使用此xpath表达式从ID为dnn_ctr103511_ViewTemplate_ctl00_ctl09_sizeDdl的选择菜单中获取所需选项:

  

//选择[@id =" dnn_ctr103511_ViewTemplate_ctl00_ctl09_sizeDdl"] /选项[否(含有(@class,   " greyOut"))而不是(包含(@selected,"选择"))]

然后,您可以循环DOMXPath::query的结果并创建一个包含所有价格的数组,并使用implode创建一行演示文稿。

例如:

$urlIn1 = "http://www.sportsdirect.com/slazenger-mens-canvas-shoes-246033?colcode=24603325";
libxml_use_internal_errors(true);
$docIn1 = new DOMDocument();
$docIn1->loadHTMLFile($urlIn1);

$docIn1->preserveWhiteSpace = false;
$docIn1->formatOutput = true;

$xpathIn1 = new DOMXpath($docIn1);
$domNodeList = $xpathIn1->query('//select[@id="dnn_ctr103511_ViewTemplate_ctl00_ctl09_sizeDdl"]/option[not(contains(@class, "greyOut")) and not(contains(@selected, "selected"))]');

$prices = array();
foreach ($domNodeList as $domElement) {
    $prices[] = $domElement->nodeValue;
}

echo implode(', ', $prices);