此代码如下,
假设,
$GROUPS = $row['groups'];
如果我打印 $ GROUPS 变量,输出将为
<p> Item1 </p>
<p> Item 2 </p>
<p> Item 3 </p>
<p> Item 4 </p>
<p> Item 5 </p>
<p> Item 6 </p>
<p> Item 7 </p>
如何从$ GROUPS变量打印最后一个p标签元素。 此处输出第7项 。
或者如果我想从$ GROUPS变量中(动态地)打印4/5/6 th p标签元素。
如何在 PHP代码中解决此问题?
答案 0 :(得分:2)
您可以在结束的p标记上拆分字符串,然后访问创建的数组中的元素:
$groupsarray = explode('</p>',$GROUPS);
echo $groupsarray[6] . '</p>'; //add back closing p tag
答案 1 :(得分:2)
如果每行后面有一个新行,则可以按新行爆炸
$groups = "<p> Item1 </p>
<p> Item 2 </p>
<p> Item 3 </p>
<p> Item 4 </p>
<p> Item 5 </p>
<p> Item 6 </p>
<p> Item 7 </p>";
$groups_arr = explode("\n",$groups);
echo "The last element:".$groups_arr[count($groups_arr)-1];
echo "\n";
echo "The 5th element:".$groups_arr[5-1];
与
$groups_arr[count($groups_arr)-1];
无论数组项数是多少,您都可以轻松引用数组的最后一个元素。
对于N元素,仅指N-1,因为FIRST元素是0。 例如:
echo "The 5th element:".$groups_arr[5-1];
这里的行动: http://3v4l.org/4j66Y
如果要从数组的X到Y元素动态打印,请尝试使用此函数
function PrintFromTo($start,$end,$array)
{
if(!is_array($array))
return false;
$inc=0;
foreach($array as $an_element)
{
$inc++;
if(($inc>=$start)&&($inc<=$end))
{
echo $an_element; // tip: you can append a new line character or a <br>
}
}
}
答案 2 :(得分:1)
<?php
preg_match_all("#<p>(.*)</p>#", $GROUPS, $match);
print $match[0][6]; // Item 7
?>
答案 3 :(得分:1)
您可以使用 DOMDocument 等HTML解析器以及 DOMXPath 来有效地将HTML细分为标记(以便于操作)< / p>
代码:
$dom = new DOMDocument;
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$p = $xpath->query('//p');
//getting last item:
$last = $p->length - 1;
echo $p->item($last)->nodeValue;
//getting 3rd item:
echo $p->item(2)->nodeValue;
<强> Demo 强>
答案 4 :(得分:0)
使用$row['groups'];
更改json_encode
存储数据的方式。
例如,我们有一个字符串; <p>Item 1</p> ... <p>Item 7</p>
,我们可以将其存储在数组中,例如;
$arrGroups = array();
$arrGroups[] = "Item 1";
$arrGroups[] = "Item 2";
$arrGroups[] = "Item 3";
$arrGroups[] = "Item 4";
然后json_encode
该数组,并将其存储在$row['groups']
。
既然$row['groups']
拥有表示数组["Item 1","Item 2","Item 3","Item 4"]
的json字符串 - 我们可以通过将其解码回数组并选择我们想要的元素来利用它。
$arrGroups = json_decode($row['groups'], true);
//Item 4
echo $arrGroups[count($arrGroups)-1]; //-1 because indexing starts at 0
答案 5 :(得分:0)
虽然您可以按照其他答案的建议使用explode
,但单独生成<p>
并将它们存储在数组中可能会更加健壮,例如:
而不是
$groups = "<p> Item1 </p>
<p> Item 2 </p>
<p> Item 3 </p>
<p> Item 4 </p>
<p> Item 5 </p>
<p> Item 6 </p>
<p> Item 7 </p>";
echo $groups;
使用
$groups = array(
" Item 1 ",
" Item 2 ",
" Item 3 ",
" Item 4 ",
" Item 5 ",
" Item 6 ",
" Item 7 ");
echo "<p>".implode("</p><p>", $groups)."</p>";
如果您这样做,可以使用$groups[6]
轻松访问“第7项”。