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的主要内容,如果未能解决你的问题,请参考以下文章