php echo first dibs

时间:2012-12-29 00:00:27

标签: php regex

我不想成为帮助吸血鬼:你不必为我编码。 我想主要想知道我能做到这一点。

我应该如何回应字符串中的前5个div? 我使用“file_get_contents”抓住它,把它放在一个字符串中,解析它,然后回显它。 我该如何解析它?正则表达式?一些dom解析器?

与此字符串一样:

<div class="div">1</div><div class="div">2</div><div class="div">3</div><div class="div">4</div><div class="div">5</div><div class="div">end!</div>

非常感谢, 欢呼声

5 个答案:

答案 0 :(得分:1)

试试这个:

  • 您可以添加root-Element以使输入数据有效XML并使用
    libxml(DOM,simplexml等)。但输入数据必须是有效的xml 数据(您的示例数据看起来有效,只需要根元素)。
  • 使用带有><的strpos作为模式而不是substr。这是更快的方式

<强>更新 这里使用strpos和substr:

示例代码
$data = '<div class="div">1</div><div class="div">2</div><div class="div">3</div><div class="div">4</div><div class="div">5</div><div class="div">end!</div>';
$pos = 0;
for($i=0; $i<5; $i++) {
    $pos = strpos($data, '><', $pos+2);
}
echo substr($data, $pos+1);

答案 1 :(得分:0)

如果您想坚持使用PHP,

strpossubstr可能是最佳选择。

答案 2 :(得分:0)

如果div的内容可以包含子串“div”或其他元素,最好使用一些解析器。我推荐phpQuery,它很像jQuery,但对于php。

代码将如下所示:

echo pq('div:lt(5)', $string)->html()

答案 3 :(得分:0)

$string = '<div class="div">1</div><div class="div">2</div><div class="div">3</div><div class="div">4</div><div class="div">5</div><div class="div">end!</div>';

$dom = new DOMDocument();
$new_dom = new DOMDocument;
$dom->loadHTML($string);

$count = 0;
foreach ($dom->getElementsByTagName('div') as $node)
{
    $new_dom->appendChild($new_dom->importNode($node, TRUE));
    if (++$count >= 5)
        break;
}

echo $new_dom->saveHTML();

您可以使用PHP的DOMDocument类,而不是使用jQuery或第三方库。

答案 4 :(得分:-1)

jquery slice

$(".topics .topic").slice(5).hide();

http://api.jquery.com/slice/