我有一个< ul>有些< li>(s)。我想计算这些<的数量。 li>在服务器端。如果这个数字符合给定条件,那么我想添加更多<李>这个元素< UL取代。有人可以帮帮我吗?
答案 0 :(得分:3)
首先使用php's DOM module和XPath
的简单示例$s = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><title>...</title></head><body>
<ul>
<li>1</li><li>2</li>
</ul>
<ul>
<li>1</li><li>2</li><li>3</li>
</ul>
<ul>
<li>x</li><li>y</li>
</ul>
</body></html>';
$doc = new DOMDocument;
$doc->loadhtml($s);
$xpath = new DOMXPath($doc);
foreach( $xpath->query('//ul[ count(li)<3 ]') as $ul ) {
$li = $doc->createElement('li', 'abc...xyz');
$ul->appendChild($li);
}
echo $doc->savehtml();
然后是一个过于简单的例子,我的意思是“而且该功能也不能包括额外的数据?”
echo firstFunction(array('a'), 'secondFunction');
function firstFunction($arrData, $fnFill=null) {
$rv = '';
$counter = 0;
foreach($arrData as $e) {
$counter += 1;
$rv .= '<li>'.htmlspecialchars($e).'</li>';
}
if ( 4 > $counter && !is_null($fnFill)) {
// oh no. Not enough elements. Let's call $fnFill(), it provides some filler material
$rv .= $fnFill();
}
return $rv;
}
// providing extra li elements
function secondFunction() {
return '<li>x</li><li>y</li><li>z</li>';
}
答案 1 :(得分:0)
使用PHP的DOM library,或查找Simple DOM Parser。它们都具有您在问题范围内操作和搜索HTML所需的一切