源代码:
<div id="point">9</div>
<div id="point">REAL POINT: 9</div>
和解析器代码:
$point = $html->find('div[id=point]');
所以,当你写$point[0]
时,它将是第一个,而另一个将是第二个。
但有时候我需要制作一个这样的算法:“找到带有id点的div,并且必须以开始:”
我们可以找到
$point = $html->find('div[id=point]')->innertext=' REAL POINT:';
但是只发现div包括'REAL POINT:'
但我必须找到divs innertext 开始'REAL POINT:'
我怎么找到?
答案 0 :(得分:1)
你可以使用stripos来区分大小写。
foreach($html->find('div[id=point]') as $element) {
if ( strpos($element->innertext, 'REAL POINT:') !== FALSE ) {
// something here
}
}
您也可以在开头准确搜索字符串:
foreach($html->find('div[id=point]') as $element) {
if ( strpos($element->innertext, 'REAL POINT:') === 0 ) {
// something here
}
}
但是如果你想在div中的第一个字符之前删除空格:
foreach($html->find('div[id=point]') as $element) {
if ( strpos(trim($element->innertext), 'REAL POINT:') === 0 ) {
// something here
}
}
答案 1 :(得分:0)
使用XPath:
//div[@id='point' and starts-with(., 'REAL POINT:')]
答案 2 :(得分:0)
示例(http://codepad.org/pkdd3Suz):
<?php
$html = <<<END
<html>
<head>
<title>Sample</title>
</head>
<body>
<div id="point">9</div>
<div id="point">REAL POINT: 9</div>
</body>
</html>
END;
$doc = new DOMDocument;
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$nodes = $xpath->query('//div[@id="point" and starts-with(., "REAL POINT:")]');
if ( $nodes )
foreach ( $nodes as $node )
echo $node->textContent . PHP_EOL;