开发者

PHP Regular Expression Help

A client has ~7,000 products with a "Your Price: $..." in the description, the price is typed开发者_运维百科 in (there is no existing wildcard).

Here is an example of a description:

<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>

Is there a regular expression to use to just remove the Your Price row? What is we wanted to remove the Retail Price row as well?

Any help would be greatly appreciated!


You can do something like this (provided $str is the html string):

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

The empty string will replace it with nothing, thus removing it.

EDIT:

Escaped some stuff to make it work. I also urge you to use a HTML parser. Let's call this the quick and dirty method.


I strongly recommend you use an HTML parser for this. That being said, the following will most likely do what you want:

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

I don't know MySQL regex syntax, so you might want to double-check that.


You really don't want to parse or modify HTML with regular expressions... Just use something made for it, for example phpQuery: http://code.google.com/p/phpquery/

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜