我正在尝试使用SimpleHtmlDom library
foreach($html->find('div[class="blogcontent]') as $a) {
foreach($a->find('p') as $elm) {
echo $elm->href .$elm->plaintext. '<p>';
if($elm, -1) {
return;
}
}
}
我正在尝试实施他们的医生所说的话:
> // Find lastest anchor, returns element object or null if not found > (zero based) $ret = $html->find('a', -1);
但我明白了:
解析错误:语法错误,意外&#39;,&#39;
我需要停止循环并且不要回显它找到的最后一个p
答案 0 :(得分:1)
备选方案1:
您可以尝试以“旧方式”获取最后一个元素,即使用 count()来获取元素数量,然后使用计数器比较(如果它在中)最后一个元素然后如果它是真的你跳过最后一个元素。这样你就可以做到:
$a=$html->find('div[class="blogcontent]';
$i = 0;
foreach($a as $as) {
$b=$as->find('p');
$total_items = count($b);
foreach($b as $elm) {
if ($i == $total_items - 1) {
return; // or you can use break function to see if it stops on the last element
}
echo $elm->href .$elm->plaintext. '<p>';
}
}
备选方案2:
您可以使用结束()来了解您是否使用此方式处于最后一个元素:
$a=$html->find('div[class="blogcontent]';
foreach($a as $as) {
$b=$as->find('p');
foreach($b as $elm) {
if ($elm === end($b)) {
return; // or you can use break function to see if it stops on the last element
}
echo $elm->href .$elm->plaintext. '<p>';
}
}
答案 1 :(得分:1)
如果您要删除最后一个标记,而不是遍历所有数据,请从find()
获取所有值,然后使用array_pop()
删除最后一个...
foreach($html->find('div[class="blogcontent"]') as $a) {
$pTags = array_pop($a->find('p'));
foreach( $pTags as $elm) {
echo $elm->href .$elm->plaintext. '<p>';
}
}
如果您只想要最后一个<p>
标记,那么
$pTags = $a->find('p');
$lastTag = $pTags[count($pTags)-1];
答案 2 :(得分:1)
除了尝试识别最后一个条目之外,在每个条目之前显示nameLabel1 = Label(welcome, text="Welcome", bg="gray", fg="white")
nameLabel1.grid(column=0, row = 1)
nameLabel2 = Label(welcome, text="Welcome", bg="gray", fg="white")
nameLable2.grid(column=1, row = 1)
nameLabel3 = Label(welcome, text="Welcome", bg="gray", fg="white")
nameLabel3.grid(column=2, row = 1)
可能更容易,除了第一个条目
<p>