从字符串中抓住美分

时间:2014-09-09 08:59:05

标签: php regex preg-match-all

我只想从我拥有的字符串中获取美分,而不是全部美元..以0.xx开头的任何内容都是我想要回应的内容:

$paste = "08/29/2014    Interest Paid       $ 0.03  $ 37.69
08/25/2014  ACH Deposit         $ 0.93  $ 37.66
08/20/2014  ACH Deposit         $ 0.63  $ 36.73
08/04/2014  ACH Deposit         $ 0.95  $ 36.10
08/04/2014  ACH Deposit         $ 0.57  $ 35.15
08/04/2014  ACH Deposit         $ 0.88  $ 34.58
07/31/2014  Interest Paid       $ 0.01  $ 33.70
07/31/2014  ACH Deposit         $ 0.13  $ 33.69
07/31/2014  ACH Deposit         $ 0.96  $ 33.56
07/31/2014  ACH Deposit         $ 0.65  $ 32.60
07/31/2014  ACH Deposit         $ 0.53  $ 31.95
07/31/2014  ACH Deposit         $ 0.83  $ 31.42
07/30/2014  ACH Deposit         $ 0.63  $ 30.59
07/28/2014  ACH Deposit         $ 0.76  $ 29.96";

我已经尝试了以下但是它不会做我需要的东西,也不会一行一行地回应我想要的......

$find = strpos($paste, '0.');
sscanf(substr($paste, $find), '0.%d', $numbers);

我非常感谢您提供的任何帮助。提前谢谢..

2 个答案:

答案 0 :(得分:3)

你可以试试这样的事情

$paste = <<<EOT
08/29/2014  Interest Paid       $ 0.03  $ 37.69
08/25/2014  ACH Deposit         $ 0.93  $ 37.66
08/20/2014  ACH Deposit         $ 0.63  $ 36.73
08/04/2014  ACH Deposit         $ 0.95  $ 36.10
08/04/2014  ACH Deposit         $ 0.57  $ 35.15
08/04/2014  ACH Deposit         $ 0.88  $ 34.58
07/31/2014  Interest Paid       $ 0.01  $ 33.70
07/31/2014  ACH Deposit         $ 0.13  $ 33.69
07/31/2014  ACH Deposit         $ 0.96  $ 33.56
07/31/2014  ACH Deposit         $ 0.65  $ 32.60 07/31/2014  ACH Deposit         $ 0.53  $ 31.95
07/31/2014  ACH Deposit         $ 0.83  $ 31.42
07/30/2014  ACH Deposit         $ 0.63  $ 30.59
07/28/2014  ACH Deposit         $ 0.76  $ 29.96
EOT;

preg_match_all('/\$\s00?\.(\d+)/', $paste, $cents);
print_r($cents[1]);

如您所见,每个值不必在每一行中。

输出:

Array
(
    [0] => 03
    [1] => 93
    [2] => 63
    [3] => 95
    [4] => 57
    [5] => 88
    [6] => 01
    [7] => 13
    [8] => 96
    [9] => 65
    [10] => 53
    [11] => 83
    [12] => 63
    [13] => 76
)

如果您希望将0.03之类的整个值更改为此值。

\$\s(00?\.\d+)

Working PHP demo | Working Regex demo

答案 1 :(得分:2)

你可以尝试:

$matches = array();
preg_match_all('/\$ 0.[0-9]{2}  /', $paste, $matches);