如何在没有特定ID的情况下删除HTML表格数据中显示的内容?

时间:2012-10-19 09:25:52

标签: php

我有以下代码;

<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

         
    兄弟TN 240正品超值套装
    $ 123.00          
    兄弟TN 240正品超值套装
    $ 54.00

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

2 个答案:

答案 0 :(得分:1)

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

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

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

这样的缺点:

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

http://www.functions-online.com/preg_replace.html

上进行了简要测试

答案 1 :(得分:0)

如果您知道要查找的字符串,则可以这样做     $ find =“$ 41.90”;     $ replace =“”; //空字符串     $ myhtmlstring = str_replace($ find,$ replace,$ myhtmlstring);

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

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