Php 如何获取所有未使用正则表达式链接的URL

Php 如何获取所有未使用正则表达式链接的URL,php,regex,Php,Regex,我需要从给定的字符串中获取所有未链接的url(没有锚标记的url) 我知道正则表达式(http | ftp | https):/([\w-]+(?:(?:\.[\w-]+)+)([\w,@?^=%&:/~+-]*[\w@?^=%&/~+-]),从给定字符串获取所有URL 输入: <div class='test'> <p>Heading</p> <a href='http://www.google.com'>google</a> www

我需要从给定的字符串中获取所有未链接的url(没有锚标记的url)

我知道正则表达式
(http | ftp | https):/([\w-]+(?:(?:\.[\w-]+)+)([\w,@?^=%&:/~+-]*[\w@?^=%&/~+-]),
从给定字符串获取所有URL

输入:

<div class='test'>
<p>Heading</p>
<a href='http://www.google.com'>google</a>
www.yahoo.com
http://www.rediff.com
<a href='http://www.overflow.com'>www.overflow.com</a> 
</div>

标题

www.yahoo.com http://www.rediff.com
输出:

<div class='test'>
<p>Heading</p>
<a href='http://www.google.com'>google</a>
www.yahoo.com
http://www.rediff.com
<a href='http://www.overflow.com'>www.overflow.com</a> 
</div>
  • www.yahoo.com

  • 敬请告知。

    简单使用即可获得href来源:

    href='(.+?)'
    

    使用库获取dom树html,并获取所有链接。 例如,您可以使用simplehtml

    //从URL或文件创建DOM
    $html=file\u get\u html('http://www.google.com/');
    //查找所有链接
    foreach($html->find('a')作为$element){
    echo$element->href.
    ; }
    这种糟糕的方式。用regexp解析html 1)用DOM解析器解析html,2)删除所有锚定标记,3)收集URL。@WiktorStribiżew,我认为regex比DOM解析器快,因为我的输入总是字符串内容而不是html内容。你可以跳过:
    (?is)@raj试试这个
    (?更快并不意味着更安全。是的,
    (*SKIP)(*F)
    应该可以。