此代码如下,
假设
$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个p标记元素。
如何在PHP代码中解决此问题?
如果每行后面都有一个新行,则可以按新行进行分解
$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元素,由于第一个元素是0,因此仅参考N-1。示例:
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>
}
}
}
您可以拆分结束p标记上的字符串,然后访问创建的数组中的元素:
$groupsarray = explode('</p>',$GROUPS);
echo $groupsarray[6] . '</p>'; //add back closing p tag
<?php
preg_match_all("#<p>(.*)</p>#", $GROUPS, $match);
print $match[0][6]; // Item 7
?>
您可以使用像DOMDocument这样的HTML解析器以及DOMXPath来有效地将HTML分解为标签(以便于操作)
代码:
$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;
演示
使用json_encode
更改$row['groups'];
存储数据的方式。
例如,我们有一个字符串类似;<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
虽然您可以按照其他答案的建议使用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"。