PHP字符串操作:提取href

Posted

技术标签:

【中文标题】PHP字符串操作:提取href【英文标题】:PHP String Manipulation: Extract hrefs 【发布时间】: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"

谢谢, 伊恩

【问题讨论】:

Grabbing the href attribute of an A element的可能重复 【参考方案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)));

【讨论】:

以上是关于PHP字符串操作:提取href的主要内容,如果未能解决你的问题,请参考以下文章

PHP中自带的字符串操作函数合集

php字符操作

python 字符串操作切片的使用

PHP字符串截取操作大全

dedecms中提取的zip压缩文件操作类zip.class.php

简单入门PHP中的多字节字符串操作