【问题标题】:How to grab http and mailto links in regex如何在正则表达式中获取 http 和 mailto 链接
【发布时间】:2014-05-01 23:30:38
【问题描述】:

我正在尝试修复 WP 插件上的错误。它使用这个表达式来解析 url:

$anchorPattern = '/\'\"\/\/([^\'\"]+?)\'\">(.*?)</a>/i';

问题出在 mailto: url,没有正确匹配。 所以例如,当代码是这样的:

<a href="mailto:email@email.com" target="_blank"><img src="email.png"></a>

第二场比赛是

mailto:email@email.com" target="_blank"&gt;&lt;img src="http:

因为正则表达式只在 // 处停止。如何更改正则表达式以使第二个匹配为 'mailto:' ?

在这里进行正则表达式测试:http://regex101.com/r/sY4bW8

【问题讨论】:

  • DOM怎么样?

标签: php regex email


【解决方案1】:

您可以按如下方式修改您的正则表达式:

&lt;a (.*?)href=[\'\"](.*?:)([^\'\"]+?)[\'\"](.*?)&gt;(.*?)&lt;\/a&gt;

现在它将匹配mailto:

Demo

【讨论】:

  • 谢谢!这几乎就是我需要的!在这种情况下,普通 url 的第三个匹配项将类似于“//url.com”。是否可以在第三个匹配项中仅获取 'url.com'(不带 //)和 'email @email.com' 用于发送邮件?
  • 是的@sshashank124!完美的!谢谢!
【解决方案2】:

Vê se é isso que vc quer:

preg_match('/<a.*?href=["\'](.*?)["\'].*?><img.*?src=["\'](.*?)["\'].*?>/i', $html)

Grupo 1 é o url
Grupo 2 来源图片。

http://regex101.com/r/dR5cQ6

【讨论】:

    猜你喜欢
    • 2012-03-22
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    相关资源
    最近更新 更多