在PHP中如何替换字符串中相似但不同的部分?

3

我现在要获取一个字符串 (通常是图片地址)。理想情况下,我希望它始终保持

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?

1个回答

2
你需要为这个任务准备一个正则表达式。
$img = preg_replace('/-\d+x\d+(\.png)$/', '\1', $img);

点赞了,谢谢!它完美地运行了!6分钟后会接受 :) - 然而,我对正则表达式不是很了解,因此无法解密那段代码...如果它是一个jpg或gif呢? - Xhynk
1
@AlexDemchak 然后将正则表达式修改为:/-\d+x\d+(\.(png|jpg|gif))$/i。添加 i 使其不区分大小写(因此 .PNG 也会匹配)。 - Robin V.
1
@Robin - 你可能想把内部分组改为非捕获分组:/-\d+x\d+(\.(?:png|jpg|gif))$/i - nickb
1
如果扩展名可以是任何东西,您也可以只使用 (\..+?)$;然后您不需要单独的组。 - Explosion Pills
@ExplosionPills 我真希望我能给你更多的积分。稍加调整后,它完美地运行了,正是我所需要的!谢谢! :) - Xhynk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接