在PHP中,如何从字符串中提取货币,金额和日期?

时间:2016-05-13 07:45:39

标签: php regex

我有这个字符串。

11 Apr 2016 $10,000.00 $10.00 11 May 2016

我需要解析它们中的日期和货币值,并在日期和金额以及货币变量数组中得出它,如,

日期数组:

Array([0] => "11-Apr-2016", [1] => "11-May-2016")

金额数组:

Array([0] => "10000.00", [1] => "10.00")

$currency = '$';

我的方法是分别解析日期和金额并将其推送到相应的数组但却陷入解析自身的困境。

条件:日期可以是任何格式,以 - 或/和月份分隔,也可以是数字或文本。货币也不仅仅是$。我有一系列所有可用的货币代码。我在爆炸字符串以查找货币后通过检查值的存在来使用它。

提前致谢。

2 个答案:

答案 0 :(得分:1)

你的字符串:

$str = "11 Apr 2016 $10,000.00 $10.00 11 May 2016";

使用此模式获取“date array:”

preg_match_all("/(\d{1,2} [a-zA-Z]+ \d{4})/", $str, $date_array);
print_r($date_array);

Regex Demo

使用此模式获取“数量数组:”

preg_match_all("/\\$[^ ]+/", $str, $amount_array);
print_r($amount_array);

Regex Demo

他们两个都是here is a PHP Demo

答案 1 :(得分:1)

这可能适合你。

    $phrase  = "1 Apr 2016 $10,000.00 $10.00 11 May 2016";
    $currency = array('$');
    $phrase = explode(' ', $phrase);

    $date_one = $phrase[0] . '-' . $phrase[1] . '-' . $phrase[2];
    $date_two = $phrase[5] . '-' . $phrase[6] . '-' . $phrase[7];

    $price_one = $phrase[3];
    $price_two = $phrase[4];

    $price_one = str_replace($currency, '', $price_one);
    $price_two = str_replace($currency, '', $price_two);
    $date = array($date_one, $date_two);
    $price = array($price_one, $price_two);