我正在使用一个接受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.png 至 http://example.com/images/XX/YY/filename.jpg
WHERE
XX和YY是变量,可能处于文件夹结构中的任何深度级别。
但是请忽略除example.com以外的任何其他域名。
后端的代码是用PHP编写的。
我需要一行正则表达式代码才能返回" .png"文字,所以我的脚本可以用" .jpg"替换它。非常感谢任何帮助。
答案 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
谢谢大家!