【问题标题】:how can i extract href from <a> tag using php [duplicate]我如何使用php从<a>标签中提取href [重复]
【发布时间】:2011-11-18 15:20:14
【问题描述】:

可能重复:
Grabbing the href attribute of an A element

给定链接

$link="<a href='test.php'>test</a>";

如何使用 php 分隔 href 和锚文本。

【问题讨论】:

  • “分离”如何?你想用这些零件做什么?

标签: php html


【解决方案1】:

您并没有具体说明要解析的字符串,但是使用 PHP 执行此操作的一种非常简单的方法是在您的情况下将其解析为格式化字符串 (Demo):

$link = "<a href='test.php'>test</a>";

$result = sscanf($link, "<a href='%[^']'>%[^<]</a>", $href, $text);

var_dump($result, $href, $text);

但是如果链接的格式发生变化,这不是很稳定,所以你最好寻找has been already answered的DomDocument。

【讨论】:

    【解决方案2】:
    <?php
    $link="<a href='test.php'>test</a>";
    libxml_use_internal_errors(true);
    $dom = new domdocument;
    $dom->loadHTML($link);
    foreach ($dom->getElementsByTagName("a") as $a) {
        echo $a->textContent, "\n";
        echo $a->getAttribute("href"), "\n";
    }
    

    【讨论】:

      【解决方案3】:
      $link = "<a href='test.php'>test</a>";
      preg_match('~<a .*?href=[\'"]+(.*?)[\'"]+.*?>(.*?)</a>~ims', $link, $result);
      //result[1] == test.php
      //result[2] == test
      

      或者更好的,如果你想要“测试”

      $link = "<a href='test.php'>test</a>";
      $result = strip_tags($link);
      

      最后你可以看看DOMDocument

      【讨论】:

      • 我已经尝试过了,但它只是给了我锚 ttext..我将如何获得 href
      • 很多人抱怨在 HTML 中使用正则表达式,总的来说,他们这样做是对的。但是,如果您知道 $link 总是 会以相同的方式格式化,那么我个人认为没有问题。只是我的2美分。 :)
      猜你喜欢
      • 1970-01-01
      • 2011-09-15
      • 1970-01-01
      • 1970-01-01
      • 2019-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-04
      相关资源
      最近更新 更多