用SimpleHTMLDom刮取时替换一段字符串

时间:2011-03-10 15:29:02

标签: php screen-scraping

使用:http://simplehtmldom.sourceforge.net/

我正在比较不同品牌的几乎相同产品的价格。现在,当我从标签获取信息时,重量已经包含在内,我想摆脱那部分并自己写出重量,因为我将把所有信息放在一张表中。

代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Supplementen Prijzenvergelijking</title>
</head>
<body>
<?php
include("simple_html_dom.php");
// DOM object creeëren
$html = new simple_html_dom();
// HTML ophalen
$html->load_file('http://bodyenfitshop.nl/whey-proteine/body-fit-sportsnutrition/whey-perfection');

$wp22kg = $html->find(".r", 2)->innertext;
$wp44kg = $html->find(".r", 4)->innertext;

// Prijs ophalen van B&F Shop Whey Perfection dmv innertext van <td class=r>
echo "Whey Perfection 2270 gram: " . $wp22kg . "<br>";
echo "Whey Perfection 4540 gram: " . $wp44kg . "<br>";

// HTML ophalen
$html->load_file('http://www.xxlnutrition.nl/whey-delicious/xxl-nutrition');

$wd25kg = $html->find('option[value=437]', 0)->innertext;

// Prijs ophalen van XXL Nutrition Whey Delicious dmv <option value=*>
echo "Whey Delicious " . $wd25kg;
?>
</body>
</html>

这是输出:

Whey Perfection 2270 gram: € 32,90
Whey Perfection 4540 gram: € 54,90
Whey Delicious 2500 gram » € 49.95

我想替换“2500克»”,我该怎么办?我已经尝试过str_ireplace和preg_replace但是无法使其工作,输出保持不变。

注意:我是业余爱好者。

1 个答案:

答案 0 :(得分:0)

哦,我已经解决了。我不得不在preg_replace()中使用反斜杠;并且必须写出特殊字符“特殊方式”。

<?php
// HTML ophalen
$html->load_file('http://www.xxlnutrition.nl/whey-delicious/xxl-nutrition');
$html = preg_replace('/2500 gram &raquo; /', '', $html);
$html = str_get_html($html);

$wd25kg = $html->find('option[value=437]', 0)->innertext;

// Prijs ophalen van XXL Nutrition Whey Delicious dmv <option value=*>
echo "Whey Delicious 2500 gram: " . $wd25kg;
?>