2017-04-13 40 views
-1

價值,這是我的字符串如何從一個字符串使用正則表達式得到PHP

$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>"; 

請幫我提取39%來自在PHP中使用正則表達式此字符串(CA它可以改變)。 我在正則表達式中很弱。

在此先感謝

回答

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); 
+0

感謝您的幫助:) – Kashif

+0

@Kashif你的歡迎\ o – rray

2

使用下面的正則表達式(後跟%符號,一個或多個數字組成),我能夠拿到賽:

(\d+)\% 

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

+0

感謝您的幫助:) – Kashif

相關問題