如何在php中用简单的html dom解析器解析这个问题 箱子尺寸: 44毫米 外壳厚度: 13毫米 防水: 5自动取款机 品牌: 化石 担保: 11年有限公司 来源: 进口

如何在php中用简单的html dom解析器解析这个问题 箱子尺寸: 44毫米 外壳厚度: 13毫米 防水: 5自动取款机 品牌: 化石 担保: 11年有限公司 来源: 进口,php,dom,html-parsing,Php,Dom,Html Parsing,如何通过PHP中的DOM解析器获取44mm、化石等数据 我可以很容易得到的数据 $data=$html->find('div#productDetails',0)->innertext var_dump($data) 但是我想在我的sql表的meta_键和meta_值中打破它。。。 我可以通过 $meta_key=$html->find('div#productDetails span',0)->innertext 但是与之相关的元值???其实没那么难,现在您知道了如何解析DOM,您可以看到可以

如何通过PHP中的DOM解析器获取44mm、化石等数据

我可以很容易得到的数据

$data=$html->find('div#productDetails',0)->innertext

var_dump($data)

但是我想在我的sql表的meta_键和meta_值中打破它。。。 我可以通过

$meta_key=$html->find('div#productDetails span',0)->innertext


但是与之相关的元值???

其实没那么难,现在您知道了如何解析DOM,您可以看到可以使用哪些方法来选择所有感兴趣的元素、迭代DOM、获取其内容以及您所拥有的

<div id="productDetails" class="tabContent active details">
<span>
<b>Case Size:</b>
</span>
44mm
<br>

<span>
<b>Case Thickness:</b>
</span>
13mm
<br>

<span>
<b>Water Resistant:</b>
</span>
5 ATM
<br>

<span>
<b>Brand:</b>
</span>
Fossil
<br>

<span>
<b>Warranty:</b>
</span>
11-year limited
<br>

<span>
<b>Origin:</b>
</span>
Imported
<br>


</div>
更新:
这是一个经过测试的解决方案,如果我没有弄错的话,它会返回所需的结果:

Case Size: - 44mm
Case Thickness: - 13mm
编辑
要完全捕获
11年期限
子字符串,您需要像这样编辑上面的代码:

foreach($result as $key => $value)
{
    $stmt = $pdo->prepare('INSERT INTO your_db.your_table (meta_key, meta_value) VALUES (:key, :value)');
    $stmt->execute(array('key' => $key, 'value' => $value);
}

没那么难,真的,现在您知道了如何解析DOM,您可以看到可以使用哪些方法来选择所有感兴趣的元素、迭代DOM、获取其内容以及您所拥有的

<div id="productDetails" class="tabContent active details">
<span>
<b>Case Size:</b>
</span>
44mm
<br>

<span>
<b>Case Thickness:</b>
</span>
13mm
<br>

<span>
<b>Water Resistant:</b>
</span>
5 ATM
<br>

<span>
<b>Brand:</b>
</span>
Fossil
<br>

<span>
<b>Warranty:</b>
</span>
11-year limited
<br>

<span>
<b>Origin:</b>
</span>
Imported
<br>


</div>
更新:
这是一个经过测试的解决方案,如果我没有弄错的话,它会返回所需的结果:

Case Size: - 44mm
Case Thickness: - 13mm
编辑
要完全捕获
11年期限
子字符串,您需要像这样编辑上面的代码:

foreach($result as $key => $value)
{
    $stmt = $pdo->prepare('INSERT INTO your_db.your_table (meta_key, meta_value) VALUES (:key, :value)');
    $stmt->execute(array('key' => $key, 'value' => $value);
}

您可以使用set_回调Api删除span标记

试试这个

array(6) {
  ["Case Size"]=> "44mm"
  ["Case Thickness"]=> "13mm"
  ["Water Resistant"]=> "5 ATM"
  ["Brand"]=> "Fossil"
  ["Warranty"]=> "11-year limited"
  ["Origin"]=> "Imported"
}

您可以使用set_回调Api删除span标记

试试这个

array(6) {
  ["Case Size"]=> "44mm"
  ["Case Thickness"]=> "13mm"
  ["Water Resistant"]=> "5 ATM"
  ["Brand"]=> "Fossil"
  ["Warranty"]=> "11-year limited"
  ["Origin"]=> "Imported"
}


您可以使用Zend_Dom。这非常好,您可以像jquery一样使用选择器。这是我试过的一口井,$data=$html->find('/span/br')$数据=分解(“\n”,$data[0]->明文);var_转储(trim($data[0]);您是如何解析dom的,为什么要使用正则表达式,即使您解析dom,也要通过遍历来遍历它。我得到的输出为null。您可以使用Zend_dom。这非常好,您可以像jquery一样使用选择器。这是我试过的一口井,$data=$html->find('/span/br')$数据=分解(“\n”,$data[0]->明文);var_转储(trim($data[0]);您是如何解析dom的,为什么要使用正则表达式,即使您解析dom,也要通过遍历来遍历它,我得到的输出为null。我看到了所有这些,但无法像我所能理解的那样清楚……希望这次我能。@down voter:我不介意down vots,只要我知道原因。谁知道呢,在获取数据的过程中,我可能会学到一两件事,只要:$data=$html->find('div#productDetails',0)->innertext;但是我想把数据分解为mysql的meta_键和meta_值table@rituraj,如果你愿意,可以叫我粗一点,但我说的有一个冒号来分隔键和值,还有一个换行符来分隔键值对,对吗?@ellas:谢谢,伙计……以后会给你带来更多麻烦,,;-)嗯,我看到了这一切,但不能像我能理解的那样清楚……希望这次我能做到。@down选民:我不介意down选票,只要我知道原因。谁知道呢,在获取数据的过程中,我可能会学到一两件事,只要:$data=$html->find('div#productDetails',0)->innertext;但是我想把数据分解为mysql的meta_键和meta_值table@rituraj,如果你愿意,可以叫我粗一点,但我说的有一个冒号来分隔键和值,还有一个换行符来分隔键值对,对吗?@ellas:谢谢,伙计……以后会给你带来更多麻烦,,;-)我编辑代码时,您需要确保Everytime explode()函数适用于每个产品我编辑代码时,您需要确保Everytime explode()函数适用于每个产品