2011-04-04 85 views
2

描述中,一个客户拥有约7,000个产品,其中包含“Your Price:$ ...”,价格已输入(没有现有通配符)。PHP正则表达式帮助

这里是一个描述的例子:

<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

你可以做这样的事情(提供$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解析器。我们称之为快速和肮脏的方法。

+0

+1这人会非常有效,如果所有的记录进行格式化工作相同,但你需要在模式中转义''''和所有'/'字符。 (或更好的是,选择一个不同的正则表达式分隔符)。您应该为char类添加一个逗号(在$ 1,234.56'的情况下) – ridgerunner 2011-04-04 19:29:46

+0

您的第一个''上有一个未转义的正斜杠。 – 2011-04-04 20:42:07

+0

@Justin E. Morgan谢谢!固定。 – 2011-04-04 20:49:27