我用这个撕开我的头发 - 它不是这么复杂,但是在互联网上环顾四周并找不到答案..
我有一个字符串,可以是以下任何一种:
我想从字符串中提取金额,但只有在字符串中出现“day”或“pd”时才会提取。
到目前为止我所拥有的是......
preg_match_all('/([0-9.]+).*(day|pd)/i', $string, $matches)
..但似乎没有拿出第二笔金额。我可以把它缩小到......
preg_match_all('/([0-9.]+)/', $string, $matches)
..但是它会匹配那些不包含“day”或“pd”的那些。
任何帮助将不胜感激!
答案 0 :(得分:1)
您可以使用lookahead:
if ( preg_match_all('/[0-9.]+(?=.*?(?:day|pd))/i', '£300.00-£325.00 per day', $matches) )
print_r($matches[0]);
Array
(
[0] => 300.00
[1] => 325.00
)
答案 1 :(得分:0)
试试这个:
preg_match_all('/(?=£([0-9.]+).*(?:day|pd))/i', $string, $matches);