2011-01-25 85 views
3

我在嘗試隔離文本字符串中的百分比值。這應該很容易使用preg_match,但由於百分比符號在preg_match中用作運算符,因此無法通過搜索找到任何示例代碼。使用preg_match在字符串中查找百分比值

$string = 'I want to get the 10% out of this string'; 

我想直到結束是:

$percentage = '10%'; 

我的猜測是,我需要這樣的東西:

$percentage_match = preg_match("/[0-99]%/", $string); 

我敢肯定有一個非常快的回答這個問題,但解決方案正在逃避我!

+0

如何捕捉100%? – 2011-01-25 22:41:55

回答

4
if (preg_match("/[0-9]+%/", $string, $matches)) { 
    $percentage = $matches[0]; 
    echo $percentage; 
} 
+0

這裏的所有答案都是完美的,但我從Mikel中標出這一個,因爲它是我最終使用的那個。謝謝! – Paul 2011-01-26 08:39:08

1

正則表達式應該是/[0-9]?[0-9]%/

字符類內的範圍僅限1個字符。

3

使用正則表達式/([0-9]{1,2}|100)%/{1,2}指定匹配一個或兩個數字。該|說要匹配的模式您有比賽的範圍0-9或個位數9這已經是你的範圍一個字符數100

[0-99]

注意:這允許00,01,02,03到09有效。如果你不想這樣,使用/([1-9]?[0-9]|100)%/這迫使一個數字,範圍1-9

+1

如果百分比值不是一個整數,但如: 0.01%?我認爲以下正則表達式會更好:/[\d.]+(?=%)/,因爲它匹配緊接在%之前的數字。 – Marcin 2011-01-26 02:17:52

0
$number_of_matches = preg_match("/([0-9]{1,2}|100)%/", $string, $matches); 

這場比賽將是$matches陣中,特別是$matches[1]可選的第二個。

1

爲什麼不是/\d+%/?簡短而甜美。