我正在使用php,我有一个字符串: -
$string ="i have 300 $, 1000$ ,500 euro in my account";
我希望获得300 $, 1000$ ,500 euro
并显示。
并进一步删除货币,只有金额和显示。 这是我的代码。
$allwords = preg_split("/\s+/", $string);
$prices = array();
foreach ($allwords as $word_value) {
if (strpos($word_value, '$') !== false) {
$prices[] = str_replace(array(","), "", $word_value);
}
}
到目前为止,我只能从字符串中获取1000$
。请任何帮助,谢谢。
答案 0 :(得分:1)
以下正则表达式does what you're looking for:
\d+(?:\s?(?:\$|euro))
在PHP
代码中,这将是:
$string ="i have 300 $, 1000$ ,500 euro in my account";
$regex = '~\d+(?:\s?(?:\$|euro))~';
preg_match_all($regex, $string, $matches);
print_r($matches);
请参阅a demo on ideone.com 要实际获取数字(在您的情况下为300,1000,500),您可以使用如下捕获组:
$regex = '~(\d+)(?:\s?(?:\$|euro))~';
preg_match_all($regex, $string, $matches);
print_r($matches);
为了匹配其他货币(如@Wiktor所指出的),将这些货币添加到非捕获组:
(\d+)(?:\s?(?:\$|euro|¥|yen))
要允许 float 值,请按如下所示更改模式:
([\d.]+)(?:\s?(?:\$|euro|¥|yen))
答案 1 :(得分:0)
简单&简洁的代码可以
$prices = explode(',', $string);
foreach ($prices as $key => $value) {
$prices[$key] = floatval($value);
}