PHP正则表达式帮助

时间:2011-04-04 18:46:46

标签: php mysql regex

客户在说明中有大约7,000种产品,其中包含“您的价格:$ ...”,价格是输入的(没有现有的通配符)。

以下是说明示例:

<table cellpadding="5" border="0" width="100%"><tbody><tr><td><strong>Part #: </strong></td><td>FIV000-2100</td></tr><tr><td><strong>Retail Price: </strong></td><td>$26.39</td></tr><tr><td class="price"><strong>Your Price: </strong></td><td class="price">$23.75</td></tr><tr><td align="center" colspan="2"/></tr></tbody></table>

是否有正则表达式用于删除您的价格行?我们还希望删除零售价格行?

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:3)

您可以执行以下操作(提供$str是html字符串):

$pattern = "/<tr><td class=\"price\"><strong>Your Price: <\/strong><\/td><td class=\"price\">\\$[0-9.]+<\/td><\/tr>/";
$str = preg_replace($pattern, "", $str);

空字符串将替换为空,从而删除它。

编辑:

逃脱一些东西让它发挥作用。我还强烈建议您使用HTML解析器。我们称之为快速而肮脏的方法。

答案 1 :(得分:3)

I strongly recommend you use an HTML parser for this。话虽如此,以下很可能会做你想要的:

/Your Price:.*?\$(\d+(?:,\d+)?(?:\.\d+)?)/

我不知道MySQL正则表达式语法,因此您可能需要仔细检查它。

答案 2 :(得分:1)

你真的不想用正则表达式解析或修改HTML ...只需使用为它制作的东西,例如phpQuery:http://code.google.com/p/phpquery/