我想得到&#34; / contact / new&#34;来自<a href="/contact/new">Contact us</a>
。如果链接有“联系人”,那么条件就是如此。或者&#39;联系我们&#39;然后获取href值。没有上课。
我该怎么做?
答案 0 :(得分:0)
使用regex
和PHP
:
$text = '<a href="/contact/new">Contact us</a>';
preg_match_all('(<a href="([^"]*)">[Contact us|Contact]*</a>)', $text, $matches);
foreach ($matches[1] as $href) {
// Do whatever you want with the href attribute
echo $href;
}
使用jQuery
:
选择所有a
元素,检查他们的html()
是否是您要查找的文字attr.("href")
$("a").each(function(index, element) {
if ($(elem).html() == "Contact" || $(elem).html() == "Contact us") {
// Do whatever you want with the href attribute
console.log($(elem).attr("href"));
}
});
答案 1 :(得分:0)
我已经通过这段代码解决了。从@Matias Cerrotta接近后显然是
foreach($dom->find('a') as $element) {
echo $element->plaintext . '<br>';
}
答案 2 :(得分:0)
这可以使用SimpleXML和XPath来完成。
您需要使用file_get_contents
或其他方法调整将页面加载到SimpleXML的方式,以将页面读取到变量然后传递给它。
我创建了一个可以在
下面运行的模拟<?php
$html = '
<a href="/contact/new">Contact us</a>
';
//Replace with your loading logic here
$xml = simplexml_load_string($html);
//Perform the search
$search = $xml->xpath('//a[contains(text(), "Contact us") or contains(text(), "Contact")]');
//Check the results have at least one value
if(count($search) !== 0 && $search !== false)
{
//Get first item
$item = $search[0];
//Get item attributes
$attributes = $item->attributes();
//Output the HREF attribute (need an existence check here (isset))
echo $attributes['href'];
}
XPath方法返回一个匹配数组,如果返回多个结果,则需要对其进行过滤,在示例中,我抓取第一个并输出节点的href属性。
搜索查找所有a
标记,无论字符串/文档中的位置如何,并检查它是否包含“与我们联系”或“联系”。
注意: XPath区分大小写,虽然有办法使其不敏感,但您需要自己实现或编写更多条件来检查。
如果您需要不区分大小写,请检查另一个Stack问题,之前已经介绍过: