2012-03-27 72 views
0

我正在解析一个html文档,并且需要提取其中的所有价格(格式为$ 99.00)。所以我想要做的是提取其类或id属性中包含“Price”(或“price”)子字符串的所有元素。但我尝试使用类似$(“[class * ='Price']”)或$(“[id * ='Price']”),然后在数组上连接结果,但jquery选择器部分工作不正常,没有找到任何东西。我做错了什么,还是有更好的方法来做到这一点?任何建议更好的方法? 谢谢。使用jQuery从html中提取价格

UPDATE:我实际上使用一个名为phpQuery的jQuery端口为php。

UPDATE2:我不知道元素的确切类或ID,因为这是一个通用的脚本,我会在不同的电子商务网站运行,所以这就是为什么我使用* =通配符获取所有元素(主要是a,div,span等,我不需要输入)。我想通了,这是我到目前为止:

function getPrice($doc){ 
    phpQuery::selectDocument($doc); 
    $prices = array(); 
    foreach(pq("[class*='Price'], [class*='price'], [id*='Price'], [id*='price']") as $res){  
     $each = pq($res); 

     if(preg_match('/\$\d+(?:\.\d+)?/', $each->text(), $matches)){ 
      echo '<br>'.$matches[0].'</br>'; 
      $prices[] = $each->html(); 
     } 
    } 
} 

这是打印正确的元素。现在我需要提取这些元素的字体大小,以便我可以按字体大小对数组进行排序。

+2

请添加jsfiddle的HTML。 – iambriansreed 2012-03-27 15:07:03

+0

显示您的代码。 – Ryan 2012-03-27 15:08:43

回答

0

选择通过ID:$("#Price")

选择通过类别:$(".Price")

显示你的HTML会有所帮助。

0

给这个前

$(function(){ 
    $('.price').each(function(){ 
     //create your array here of $(this).val() or $(this).html() 
    }); 
}); 
+0

明显尝试与类价格的物品。使用$(this).val如果它是一个输入或$(this).html如果它是一个div/span/a/etc :) – 2012-03-27 15:09:09