0

我有以下代码;

<td class="smallText" width="33%" valign="top" align="center">
<a href="#"><img width="100" height="100" border="0" title=" Genuine Value Pack " alt="Brother TN" src="images.jpg"></a>
<br>
<a href="#">Brother TN 240 Genuine Value Pack</a><br>
$325.00


Brother TN 240 正品超值装
$123.00
Brother TN 240 正品超值装
$54.00

如何使用 php 删除每个 td 中的价格?

4

2 回答 2

1

假设您可以将定位范围缩小到给定的 dom 元素(例如,假设您的所有价格都在您可以专门定位的 div 中),那么您可以使用正则表达式来删除价格字符串。

这将是有风险的,因为它会删除您抓取的元素内所有区域的所有价格。

$myHtmlFromContainingElement = getMyDiv(/* sort this out yourself */);
$myHtmlWIthoutPrices = preg_replace('/\$[0-9]{1,10}\.[0-9]{1,10} /','',$myHtmlFromContainingElement);

这样做的缺点:

  • Preg 替换很慢,因此您希望在缓存/发布的页面上而不是在动态页面上执行此操作,尽管这可能是您愿意做出的牺牲
  • 这将只处理与精确格式匹配的价格,即“$NNNNNNNNNN.NNNNNNNN”或“美元符号、1-10 个数字、一个点、1-10 个数字然后是一个空格。
  • 这将从给定的选择中删除所有价格。

在http://www.functions-online.com/preg_replace.html上进行了简要测试

于 2012-10-23T19:22:15.340 回答
0

如果您知道要查找的字符串,例如可以执行 $find = "$41.90"; $替换 = ""; // 空字符串 $myhtmlstring = str_replace($find,$replace,$myhtmlstring);

如果你知道它在td标签中,那么你可以使用 simple_html_dom (http://simplehtmldom.sourceforge.net/) 或 symfony 的 dom 爬虫 (http://symfony.com/doc/2.0/components/dom_crawler.html) 来解析html 并生成所有td标签的列表。这缩小了您需要检查的项目。

您也可以尝试用 reg exp 替换。搜索“$”,后跟数字字符。

于 2012-10-19T10:37:46.793 回答