我有一個字符串,如「你今晚可以贏20萬美元,現在註冊!」如何從另一個字符串使用PHP獲取某些字符串?
獎品從字符串變爲字符串的地方,所以我必須用某種方式使用php正則表達式或類似的東西來做。
如何從這個字符串中使用php獲取這個值?
是否有一個簡單的正則表達式函數?
在此先感謝。
我有一個字符串,如「你今晚可以贏20萬美元,現在註冊!」如何從另一個字符串使用PHP獲取某些字符串?
獎品從字符串變爲字符串的地方,所以我必須用某種方式使用php正則表達式或類似的東西來做。
如何從這個字符串中使用php獲取這個值?
是否有一個簡單的正則表達式函數?
在此先感謝。
您正在尋找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]
閱讀
有兩種方法我可以看到要做到這一點,你可以使用正則表達式(更慢)或爆炸(更快,但不太準確)。優點是,如果有人從字符串中刪除空格,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頁面上使用,上面的代碼是不是最佳或全部捕獲時它涉及到錯誤。確保您在使用它進行某些類型的關鍵工作之前,使用已知的有效和無效字符串執行測試:)
這是什麼,你必須做什麼?獲得貨幣價值? –