php - PHP将HTML中的文件扩展名更改为纯文本
问题描述
我想在 PHP 输出的 HTML 代码中更改文件扩展名。可能使用正则表达式,这是我真的无法处理的事情..
...some code...<img data-src='https://static.example.com/gallery/image.jpg'>...some code...
应该改为
...some code...<img data-src='https://static.example.com/gallery/image.webp'>...some code...
请注意:
- 可能有任意数量的出现(零、一、多次),
- 我只想更改来自https://static.example.com/gallery/而不是来自 https://example.com或https://static.example.com的内容
- 我不想将它解析为 DOM,因为它对于我的目的来说太慢了。
谢谢你。
解决方案
像这样简单的东西怎么样:
(?<='https:\/\/static\.example\.com\/gallery\/)(.*?)(\..*?)(?=')
解释:
我们在此使用正则表达式肯定后向查找,(?<=)
以确保匹配必须以站点名称开头。如果您希望站点名称也可变,那完全是“另一个问题”。
只要将站点名称固定为static.example.com/gallery/
,我们就可以捕获第一个括号中的文件名(捕获组1),捕获组2中的点+扩展名。然后我们可以将这个匹配替换为文件名(第一个捕获组$1
)和新的 dot+extension .webp
。
推荐阅读
- sql - 影响订单数据的聚合函数
- jestjs - 开玩笑的方法 done() 没有定义
- javascript - 将 fetch PUT 请求转换为 axios 请求
- r - 高斯牛顿法 R
- html - css 类有条件地改变颜色
- c# - ASP.Net Core Web Api 中的 AuthenticationHandler 中重写的 HandleAuthenticateAsync 方法被调用两次,具有不同的标头
- java - 在 Spot 实例上增加节点大小时如何修复堆空间?
- elasticsearch - 通过 Logstash 的日期过滤器使用 grok 提取值覆盖 @timestamp
- ansible - 集成 Ansible 角色
- spring - 带有 Neo4j 的 Spring Data JPA 的 QueryDSL 绑定