如何从php变量打印最后一个p标签元素

时间:2014-04-09 11:51:01

标签: php

此代码如下,

假设,

$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代码中解决此问题?

6 个答案:

答案 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项”。