【问题标题】:Regex to get just image name PHP正则表达式仅获取图像名称 PHP
【发布时间】:2016-04-08 17:43:53
【问题描述】:

大家好,我想从 html 中的一行获取图像名称。例如,我在 PHP 中做我有这行

<img src="index_files/bottle2.jpg" name="product ds Grodsdwth" class="pullleft">

<img title="" src="index_files/ss-button.png" class="step-btn" alt=""></a>

我只想获取 bottle2.jpg 和 ss-button.png 并将其替换为 {#CDNPath#}img/imageName 以获得此结果

 <img title="" src="{#CDNPath#}img/ss-button.png" class="step-btn" alt=""></a>

我有这个正则表达式,但它不起作用:

([a-z\-_0-9\/\:\.]*\.(jpg|jpeg|png|gif))

我对这个逃脱和模式感到困惑,请我会感谢你们

【问题讨论】:

标签: php regex replace match


【解决方案1】:

尝试使用这个正则表达式:

(<img.*?src=")((?:\w+\/)+?)([\w-]+\.(?:jpg|jpeg|png|gif))"
  • 1st捕获组存储开场&lt;img等属性,然后是src="
  • 2nd捕获组存储图像文件夹,即index_files/index_files/a/
  • 3rd Capture Group 存储图像名称

替换为:

$1{#CDNPath#}img/$3"

Live Demo on Regex101

【讨论】:

  • 太棒了,只是在标签 src 末尾有一个疑问,它缺少一个“不是吗?
  • @MarcoPerez 是的,只需在替换末尾添加 " (或使用正向前瞻 - 将 RegEx 中的最后一个 " 替换为 (?="),并保留替换相同)。我已经更新了答案
  • 是的,当然!非常感谢它对我来说很难正则表达式我正在寻找一个教程有些表达式对我来说太难了
  • @MarcoPerez 只需做一个Google Search。前几个链接都是非常好的学习 RegEx 的网站。如果这回答了您的问题,请将其标记为已接受(按投票按钮下方的勾号)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-10
相关资源
最近更新 更多