正则表达式在url中获取文件类型

时间:2017-01-13 04:00:19

标签: php regex

我正在使用一个接受Regex的转换器进行大规模搜索和替换"在数据库中将所有.png更改为.jpg。考虑以下内容,其中图像的链接与许多HTML代码混合在一起(简化示例):

bunch_of_text_http:// somewebsite.com/somepath/somefile.png_bunch_of_text

" bunch_of_text"和" some-x"都是变数。

为了澄清,我需要更改的唯一.png必须遵循大部分规定的URL。例如,我需要替换example.com域上的所有.png,而不是其他域上的.png。这是另一个例子:

转换: http://example.com/images/XX/YY/filename.pnghttp://example.com/images/XX/YY/filename.jpg

WHERE

XX和YY是变量,可能处于文件夹结构中的任何深度级别。

但是请忽略除example.com以外的任何其他域名。

后端的代码是用PHP编写的。

我需要一行正则表达式代码才能返回" .png"文字,所以我的脚本可以用" .jpg"替换它。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

$url = "http://example.com/images/XX/YY/filename.png";
$result = preg_replace(';(http://example.com/images/.*?/.*?/.*?)\.png;', '$1.jpg', $url);
echo $result;

一些正则表达式解释:https://regex101.com/r/2ZDzq0/1

注意我已使用/替换了常用的;分隔符,因为在处理网址时它更容易。

答案 1 :(得分:0)

如果您想要返回的只是“.png”,那么您只需要\.png

这将匹配“.png”的实例。然后,您将执行“查找并替换所有”操作:

Find All:   \.png
Replace:    \.jpg

如果您的问题比这更复杂(即只有返回“.png”,如果上下文是这样的话),那么请澄清您的问题。

答案 2 :(得分:0)

以下是答案:https://regex101.com/r/QIgKX9/1

谢谢大家!