如何在php中使用正则表达式从字符串中获取值

时间:2017-04-13 17:46:18

标签: php regex

这是我的字符串

$string = "<table><tr><td><a href="https://rads.stackoverflow.com/amzn/click/com/B01IG6C0D4" rel="nofollow noreferrer" target="_blank"><img src="https://images-na.ssl-images-amazon.com/images/I/41ltpJWi8jL._SL160_.jpg" alt="Product Image" style='border:0'/></a></td><td><tr><td>List Price <strike>$17.99</strike></td></tr><tr><td><b>Deal Price: $11.04</b></td></tr><tr><td>You Save: $6.95 (39%)</td></tr><tr><td>Save on the AmazonBasics Foldable Laundry Hamper</td></tr><tr><td>Expires Apr 28, 2017</td></tr></td></tr>";

请帮助我使用PHP中的正则表达式从此字符串中提取39%(可以更改)。 我在正则表达式中很弱。

提前致谢

2 个答案:

答案 0 :(得分:2)

使用以下正则表达式(一个或多个数字后跟%符号)我能够得到匹配:

(\d+)\%

示例 - https://regex101.com/r/a36Zdl/1

答案 1 :(得分:0)

使用preg_match()功能匹配模式\d{1,}\s*%表示一个或多个数字(0-9)后跟空格或不是空格,最后是%信号。

如果模式匹配与否,

preg_match()返回,如果是肯定的,字符串(捕获)将存储在第三个参数($m)中。

$string = '<table><tr><td><a href="http://rads.stackoverflow.com/amzn/click/B01IG6C0D4" target="_blank"><img src="https://images-na.ssl-images-amazon.com/images/I/41ltpJWi8jL._SL160_.jpg" alt="Product Image" style=border:0/></a></td><td><tr><td>List Price <strike>$17.99</strike></td></tr><tr><td><b>Deal Price: $11.04</b></td></tr><tr><td>You Save: $6.95 (**39%**)</td></tr><tr><td>Save on the AmazonBasics Foldable Laundry Hamper</td></tr><tr><td>Expires Apr 28, 2017</td></tr></td></tr>';
preg_match('/\d{1,}\s*%/', $string, $m);

要捕获具有分数的数字,此正则表达式(\d{1,}|\d{1,}\.\d{1,})\s*%听起来更好

$string = 'asdasd 36.45%';
echo preg_match('/(\d{1,}|\d{1,}\.\d{1,})\s*%/', $string, $m);