Jam*_*rzs 3 php regex pattern-matching preg-match
我试图从这样的uris列表中解析一个整数:
uri.com/upload/123456789_abc.ext
Run Code Online (Sandbox Code Playgroud)
我正在使用这种模式:
preg_match( "#uri\.com\/upload\/(.*?)_#is", $uri, $match );
Run Code Online (Sandbox Code Playgroud)
哪个有效并且有效:
Array
(
[0] => uri.com/upload/123456789_
[1] => 123456789
)
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有办法让$ match =="123456789"返回一个具有多个值的数组.
是否可以通过仅修改模式来实现?
它将始终返回一个数组,但您可以更改模式,以便它只匹配您想要的.
$uri = "uri.com/upload/123456789_abc.ext";
preg_match('#(?<=uri\.com/upload/)\d+#is', $uri, $match );
print_r($match);
Run Code Online (Sandbox Code Playgroud)
回报
数组([0] => 123456789)
所以它仍然是一个数组,但它只包含整个匹配,即你的数字.
(?<=uri\\.com/upload/) 是一个lookbehind,它与那部分不匹配,所以它不是结果的一部分.
\d+只是匹配数字,所以_不再需要了.