【问题标题】:PHP String Manipulation: Extract hrefsPHP字符串操作:提取href
【发布时间】:2011-06-09 20:00:42
【问题描述】:

我有一个 HTML 字符串,我想检查其中是否有任何链接,如果有,请提取它们并将它们放入一个数组中。我可以通过简单的选择器在 jQuery 中做到这一点,但我找不到在 PHP 中使用的正确方法。

例如,字符串可能如下所示:

<h1>Doctors</h1>
<a title="C - G" href="linkl.html">C - G</a>
<a title="G - K" href="link2.html">G - K</a>
<a title="K - M" href="link3.html">K - M</a>

我如何(在 PHP 中)将它变成一个看起来像这样的数组:

[1]=>"link1.html"
[2]=>"link2.html"
[3]=>"link3.html"

谢谢, 伊恩

【问题讨论】:

标签: php string href extract


【解决方案1】:

您可以使用 PHPs DOMDocument 库来解析 XML 和/或 HTML。像下面这样的东西应该可以解决问题,从 HTML 字符串中获取 href 属性。

$html = '<h1>Doctors</h1>
<a title="C - G" href="linkl.html">C - G</a>
<a title="G - K" href="link2.html">G - K</a>
<a title="K - M" href="link3.html">K - M</a>';

$hrefs = array();

$dom = new DOMDocument();
$dom->loadHTML($html);

$tags = $dom->getElementsByTagName('a');
foreach ($tags as $tag) {
       $hrefs[] =  $tag->getAttribute('href');
}

【讨论】:

    【解决方案2】:

    你的问题很难理解,但我相信你想要一个 PHP DOM 解析器,你可以在这里找到简单的 dom 解析器:http://simplehtmldom.sourceforge.net/ 一个小的用法示例是:

    $array = array();
    foreach($html->find('a') as $a) 
    {
        $array[] = $a->href;
    }
    

    你可以使用 jQuery,那么你应该可以使用它,因为它的选择系统与 jQuery 以及 CSS 相同,因为 jQuery 源自 CSS

    【讨论】:

      【解决方案3】:

      一线解决方案

      $href = (string)( new SimpleXMLElement($your_html_tag))['href'];
      

      【讨论】:

        【解决方案4】:

        如果格式总是相同的,你可能可以通过组合 explode 和 strip_tags 之类的东西来整理它

         $html="<span class="field-content"><a href="http://url_to_extract">whatever</a></span>"
        
        
         $href=end(explode('"',strip_tags($html)));
        

        【讨论】:

          猜你喜欢
          • 2012-07-06
          • 1970-01-01
          • 2019-03-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-12
          相关资源
          最近更新 更多