2011-08-04 86 views
0

我有一個字符串,如「你今晚可以贏20萬美元,現在註冊!」如何從另一個字符串使用PHP獲取某些字符串?

獎品從字符串變爲字符串的地方,所以我必須用某種方式使用php正則表達式或類似的東西來做。

如何從這個字符串中使用php獲取這個值?

是否有一個簡單的正則表達式函數?

在此先感謝。

+0

這是什麼,你必須做什麼?獲得貨幣價值? –

回答

1

您正在尋找preg_match,我想:

preg_match("/\$[\d\,]+/", "You can win tonight $200,000. Sign up now!", $matches); 
# $matches[0] will be "$200.000" 

其分解:
正則表達式尋找一個美元符號(這在正則表達式特殊的意義,所以我們用反斜槓轉義,所以它被認爲是字面美元符號),接着是一個或多個數字(0-9)和逗號。

注意,如果preg_match本身返回false,這是因爲該字符串不匹配正則表達式,在這種情況下,不會有$match[0]閱讀

0

有兩種方法我可以看到要做到這一點,你可以使用正則表達式(更慢)或爆炸(更快,但不太準確)。優點是,如果有人從字符串中刪除空格,RegEx仍然可以工作,而爆炸可能突然中斷。

$src = "You can win tonight $200,000. Sign up now!"; 
function get_amount($from){ 
    $src_tkns = explode(' ', $from); 
    foreach($src_tkns as $tkn){ 
    if(substr($tkn, 0, 1)==='$'){ 
     return (substr($tkn, -1, 1)=='.')?substr($tkn, 0, -1):$tkn; 
    } 
    } 
    return false; 
} 

function get_amount_regex($from){ 
    $r = '/\$[-+]?[0-9]*(\,?[0-9]+)+/'; 
    preg_match_all($r, $from, $res); 
    return is_array($res)?$res[0][0]:false; 
} 

print('Found: '.get_amount($src).'<br />'); 
print('Regex Found: '.get_amount_regex($src)); 

更多有關正則表達式和他們在http://www.php.net/manual/en/book.pcre.php並在http://www.regular-expressions.info/tutorial.html

一件事的正則表達式信息網站要注意PHP PCRE頁面上使用,上面的代碼是不是最佳或全部捕獲時它涉及到錯誤。確保您在使用它進行某些類型的關鍵工作之前,使用已知的有效和無效字符串執行測試:)

相關問題