我只想从我拥有的字符串中获取美分,而不是全部美元..以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);
我非常感谢您提供的任何帮助。提前谢谢..
答案 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+)
答案 1 :(得分:2)
你可以尝试:
$matches = array();
preg_match_all('/\$ 0.[0-9]{2} /', $paste, $matches);