preg_match懒惰?

问题描述:

嘿家伙我试图去掉最后_1.jpg如果它 存在我的表达,但我有一些麻烦preg_match懒惰?

情景如下。

image_name_1.jpg (should be image_name.jpg)

image_name_1_1.jpg (should be image_name_1.jpg)

我想出了这一点,但它似乎是返回null

$pic = ($pic[strlen]-6 == '_') ? preg_replace('/*.\_[0-9]/', '.jpg', $pic) : $pic;

这有什么错我的公式?有人可以帮忙吗?

+0

只需使用str_replace一次即可将“_1.jpg”替换为“.jpg” – hackartist 2012-02-27 19:02:41

+0

如果它的_2虽然或_4或_9不限于一个整数,那么该如何处理这个[[0-9]' – ehime 2012-02-27 19:03:50

使用strrpos随着ohaal的表情:

$pic_name=(strrpos($pic,'_',-6)) ? preg_replace('/_\d\.jpg$/','.jpg',$pic) : $pic; 

链接: http://php.net/manual/en/function.strrpos.php

这应做到:

preg_replace('/_\d\.jpg$/', '.jpg', $pic); 

*.使得这里truble。您可以使用*.? - ?表示惰性定量。

但是你的表达并没有模式化整个输入字符串,只有目标 - 见ohaal的答案。

+0

现在一年多的问题=) – ehime 2013-09-10 19:23:56