替换 的正则表达式与各自的
我正在寻找 PHP preg_replace() 解决方案,找到图像链接并将其替换为相应的图像标签。
查找:
<a href="http://www.domain.tld/any/valid/path/to/imagefile.ext">This will be ignored.</a>
替换为:
<img src="http://www.domain.tld/any/valid/path/to/imagefile.ext" alt="imagefile" />
其中协议必须是 http://,.ext 必须是有效的图像格式(.jpg、.jpeg、.gif、.png、.tif),并且基本文件名变为 alt= ““ 价值。
我知道 preg_replace() 是适合这项工作的函数,但我对正则表达式很糟糕,所以非常感谢任何帮助!谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
恭喜,您是第一百万个向 Stack Overflow 询问如何使用正则表达式解析 HTML 的客户!
[X][HT]ML 不是常规语言,无法使用正则表达式可靠地进行解析。使用 HTML 解析器。 PHP 本身为您提供了 DOMDocument,或者您可能更喜欢 simplehtmldom。
顺便说一句,您无法通过查看文件的 URL 来判断文件的类型。 JPEG 没有理由必须以“.jpeg”作为扩展名 — 事实上,不能保证具有“.jpeg”扩展名的文件实际上就是 JPEG。唯一确定的方法是获取资源(例如使用 HEAD 请求)并查看 Content-Type 标头。
Congratulations, you are the one millionth customer to ask Stack Overflow how to parse HTML with regex!
[X][HT]ML is not a regular language and cannot reliably be parsed with regex. Use an HTML parser. PHP itself gives you DOMDocument, or you may prefer simplehtmldom.
Incidentally, you cannot tell what type a file is by looking at its URL. There is no reason a JPEG has to have ‘.jpeg’ as its extension — and indeed, no guarantee that a file with ‘.jpeg’ extension will actually be JPEG. The only way to be certain is to fetch the resource (eg. using a HEAD request) and look at the Content-Type header.
啊,我每天的 DOM 练习。您应该使用 DOM 来解析 HTML,并使用正则表达式来解析字符串,例如 html 属性。
注意:我有一些基本的正则表达式,肯定可以通过一些向导进行改进:)
注意#2:虽然这可能会产生额外的开销,但您可以使用像curl这样的东西通过发送 HEAD 请求来彻底检查 href 是否是实际图像查看 Content-Type,但这适用于 80-90% 的情况。
Ahh, my daily DOM practice. You should use DOM to parse HTML and regex to parse strings such as html attributes.
Note: I have some basic regexes that could surely be improved upon by some wizards :)
Note #2: Though it might be extra overhead you could use something like curl to thoroughly check if the href is an actual image by sending a HEAD request and looking at the Content-Type, but this would work in 80-90% of cases.
我建议使用这个更灵活的非贪婪正则表达式:
和一个更复杂的正则表达式(包括 PHP 测试代码)希望能取悦 Gumbo :)
I would suggest using this more flexible non-greddy regex:
And a more complex regex (including PHP test code) to hopefully please Gumbo :)