2012-07-27 29 views
3

所以我抓住一个字符串(通常是一个图像位置)。理想情况下,我希望它永远是取代PHP中类似但不同的字符串部分?

http://www.mydomain.com/images/cool-nifty-image.png 

但是,有时并不总是这样。有时它是

http://www.mydomain.com/images/cool-lame-image-300x300.png 

与300x300是相关的大小。在上面的例子中,我需要位于

http://www.mydomain.com/images/cool-lame-image.png 

形象(是的,它始终存在。)

这将是容易的它,它一直是三位数。但是,有时也可以是

http://www.mydomain.com/images/cool-lame-image-300x99.png 

http://www.mydomain.com/images/cool-lame-image-99x99.png 

有没有办法找到“ - #X#”这样我就可以找到-100x99和-875x200?

回答

2

你需要一个正则表达式完成这个任务

$img = preg_replace('/-\d+x\d+(\.png)$/', '\1', $img); 
+0

Upvoted,谢谢!它完美的工作!将在6分钟内接受:) - 但是,我对正则表达式了解不多,因此无法破译太多的代码......如果它是jpg或gif呢? – Xhynk 2012-07-27 22:55:35

+1

@AlexDemchak然后使正则表达式如下所示:'/ - \ d + x \ d +(\。(png | jpg | gif))$/i'。添加我,所以它是不区分大小写的(所以.PNG也匹配)。 – 2012-07-27 22:57:37

+1

@Robin - 你可能想让内部的分组成为一个非捕获组:'/ - \ d + x \ d +(\。(?: png | jpg | gif))$/i' – nickb 2012-07-27 23:10:06