php regex在href标签内获取字符串

Dav*_*vid 13 php regex html-parsing

我需要一个正则表达式,它会给我一个href标签内部的字符串和引号内部.

例如,我需要在以下内容中提取theurltoget.com:

<a href="theurltoget.com">URL</a>
Run Code Online (Sandbox Code Playgroud)

另外,我只想要基本网址部分.即http://www.mydomain.com/page.html我只想要http://www.mydomain.com/

Dre*_*ter 17

不要使用正则表达式.你可以使用xpath和内置的php函数来获得你想要的东西:

    $xml = simplexml_load_string($myHtml);
    $list = $xml->xpath("//@href");

    $preparedUrls = array();
    foreach($list as $item) {
        $item = parse_url($item);
        $preparedUrls[] = $item['scheme'] . '://' .  $item['host'] . '/';
    }
    print_r($preparedUrls);
Run Code Online (Sandbox Code Playgroud)

  • 紧凑的代码,就像妈妈用来做c: (4认同)
  • 这是从 HTML 文档中提取属性的最优雅的方式。 (2认同)

Ale*_*lec 12

$html = '<a href="http://www.mydomain.com/page.html">URL</a>';

$url = preg_match('/<a href="(.+)">/', $html, $match);

$info = parse_url($match[1]);

echo $info['scheme'].'://'.$info['host']; // http://www.mydomain.com
Run Code Online (Sandbox Code Playgroud)

  • 标签中有更多属性时,此功能将无效。例如,href =“ http://www.mydomain.com/page.html” class =“ blue” rel = even“。这将返回[path] =&gt; /page.html” class =“ blue” rel = even“ (2认同)

小智 6

这个表达式将处理3个选项:

  1. 没有报价
  2. 双引号
  3. 单引号

'/ HREF = ["\']([^ "\">] +)["\']?/'


Lin*_*iel 5

如果您只是寻找基本网址部分(@David问题的第2部分),请使用@Alec的答案!

$html = '<a href="http://www.mydomain.com/page.html" class="myclass" rel="myrel">URL</a>';
$url = preg_match('/<a href="(.+)">/', $html, $match);
$info = parse_url($match[1]);
Run Code Online (Sandbox Code Playgroud)

这会给你:

$info
Array
(
    [scheme] => http
    [host] => www.mydomain.com
    [path] => /page.html" class="myclass" rel="myrel
)
Run Code Online (Sandbox Code Playgroud)

所以你可以用$href = $info["scheme"] . "://" . $info["host"] 它给你:

// http://www.mydomain.com  
Run Code Online (Sandbox Code Playgroud)

当你在href之间寻找整个url时,你应该使用另一个正则表达式,例如@ user2520237提供的正则表达式.

$html = '<a href="http://www.mydomain.com/page.html" class="myclass" rel="myrel">URL</a>';
$url = preg_match('/href=["\']?([^"\'>]+)["\']?/', $html, $match);
$info = parse_url($match[1]);
Run Code Online (Sandbox Code Playgroud)

这会给你:

$info
Array
(
    [scheme] => http
    [host] => www.mydomain.com
    [path] => /page.html
)
Run Code Online (Sandbox Code Playgroud)

现在你可以使用$href = $info["scheme"] . "://" . $info["host"] . $info["path"]; 它给你:

// http://www.mydomain.com/page.html
Run Code Online (Sandbox Code Playgroud)


Ada*_*tek -1

/href="(https?://[^/]*)/
Run Code Online (Sandbox Code Playgroud)

我想你应该能够处理剩下的事情。