Используйте \d+
вместо \d
. В противном случае он будет соответствовать только одной цифре. +
означает «один или несколько».
preg_match_all("|£(\d+)|U",$string,$matches);
(Подробнее о том, как повторение работает в регулярных выражениях, см. эту страницу .)
Выражение, которое также допускает запятые и гарантирует, что они не находятся в странных местах (например, ,500
):
preg_match_all("|£(\d+(?:,\d+)*)|U",$string,$matches);