【问题标题】:replace similar but different parts of a string in PHP?在 PHP 中替换字符串中相似但不同的部分?
【发布时间】:2012-07-26 15:37:43
【问题描述】:

所以我抓取了一个字符串(通常是图像位置)。理想情况下,我希望它一直是

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?

【问题讨论】:

    标签: php string replace echo


    【解决方案1】:

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

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

    【讨论】:

    • 赞成,谢谢!它完美地工作!将在 6 分钟内接受 :) - 但是,我对正则表达式知之甚少,因此无法破译太多该代码...如果它是 jpg 或 gif 怎么办?
    • @AlexDemchak 然后让正则表达式看起来像这样:/-\d+x\d+(\.(png|jpg|gif))$/i。添加了 i 使其不区分大小写(因此 .PNG 也匹配)。
    • @Robin - 您可能想让内部分组成为非捕获组:/-\d+x\d+(\.(?:png|jpg|gif))$/i
    • 如果扩展名可以是任何东西,您也可以使用(\..+?)$;那么你就不需要单独的组了。
    • @ExplosionPills 我希望我能给你更多的积分。经过一两次调整,结果证明它工作得很好,正是我所需要的!谢谢! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 2013-06-19
    • 2018-03-25
    • 1970-01-01
    • 2015-12-22
    • 2015-01-13
    相关资源
    最近更新 更多