用正则表达式捕获数字组

时间:2018-09-09 17:58:42

标签: php regex pcre

im试图捕获网址中“ 图片”字后面的一组数字

这是网址http://example.com/image123456/super_moon_image_2

这是我的期望http://my-example.com/get.php?123456

使用此代码对某些网址使用其工作,但如果网址上有另一个数字,结果将被破坏。

$link = 'http://example.com/image123456/super_moon_image_2';
$re = '/[^0-9]/';
$str = preg_replace($re, '', $link);
echo 'http://my-example.com/get.php?' . $str;

有人可以帮我纠正正则表达式吗 谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用以下正则表达式模式:

(.+?)image(\d+).+

并替换为$1get.php?$2

这里是regex101 demo

我不太了解PHP,但您的代码应如下所示:

$link = 'http://example.com/image123456/super_moon_image_2';
$re = '/(.+?)image(\d+).+/m';
$subst = '$1get.php?$2';
$newlink = preg_replace($re, $subst, $link);
echo $newlink;

Live PHP example