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;
这有什么错我的公式?有人可以帮忙吗?
答
使用strrpos
随着ohaal的表情:
$pic_name=(strrpos($pic,'_',-6)) ? preg_replace('/_\d\.jpg$/','.jpg',$pic) : $pic;
答
这应做到:
preg_replace('/_\d\.jpg$/', '.jpg', $pic);
答
*.
使得这里truble。您可以使用*.?
- ?
表示惰性定量。
但是你的表达并没有模式化整个输入字符串,只有目标 - 见ohaal的答案。
+0
现在一年多的问题=) – ehime 2013-09-10 19:23:56
只需使用str_replace一次即可将“_1.jpg”替换为“.jpg” – hackartist 2012-02-27 19:02:41
如果它的_2虽然或_4或_9不限于一个整数,那么该如何处理这个[[0-9]' – ehime 2012-02-27 19:03:50