我想用 Simple DOM Parser 解析XML。我的代码正确地返回"uri"
标记的所有所需内容。
示例:
"http://www.domain.com/Start/A/93243"
"http://www.domain.com/Start/B/239483"
"http://www.domain.com/Start/C/93433"
"http://www.domain.com/Start/B/34299"
"http://www.domain.com/Start/A/234343"
现在我需要过滤返回的值。我的脚本只应返回以特定文字开头的"uri"
内容,例如"http://www.domain.com/Start/A/"
。所以我的结果应该是:
"http://www.domain.com/Start/A/93243"
"http://www.domain.com/Start/A/234343"
这是我的开始代码:
<?php
require_once ('simple_html_dom.php');
$dom = new DOMDocument;
$dom->load( 'xml-url' );
$uri = $dom->getElementsByTagName('uri');
foreach ($uri as $uri) {
echo $uri->nodeValue, PHP_EOL;
}
?>
答案 0 :(得分:0)
您可以使用strpos()
返回搜索字符串的索引,以便检查它是否为0
,这意味着它以搜索字符串开头。
foreach ($uri as $uri) {
if(strpos($uri->nodeValue, 'http://www.domain.com/Start/A/') === 0){
echo $uri->nodeValue, PHP_EOL;
}
}
答案 1 :(得分:0)
您包含一个库,但您正在使用DOMDocument。所以你不需要图书馆。 DOMDocument是PHP ext / dom的一部分。这是另一个允许您将Xpath用于DOM文档中的节点的类。
选择所有href
个元素节点的所有a
个属性节点:
//a/@href
按字符串前缀过滤它们:
//a/@href[starts-with(., "http://www.domain.com/Start/A/")]
DOMXpath :: evaluate()是您需要用来获取节点的方法:
$hrefs = $xpath->evaluate(
'//a/@href[starts-with(., "http://www.domain.com/Start/A/")]'
);
$xml = <<<'XML'
<body>
<a href="http://www.domain.com/Start/A/93243">1</a>
<a href="http://www.domain.com/Start/B/239483">1</a>
<a href="http://www.domain.com/Start/C/93433">1</a>
<a href="http://www.domain.com/Start/B/34299">1</a>
<a href="http://www.domain.com/Start/A/234343">1</a>
</body>
XML;
$dom = new DOMDocument();
$dom->loadXml($xml);
$xpath = new DOMXpath($dom);
$hrefs = $xpath->evaluate(
'//a/@href[starts-with(., "http://www.domain.com/Start/A/")]'
);
foreach ($hrefs as $hrefAttribute) {
var_dump($hrefAttribute->value);
}
输出:
string(35) "http://www.domain.com/Start/A/93243"
string(36) "http://www.domain.com/Start/A/234343"