php echo第一个divs

php echo第一个divs,php,regex,Php,Regex,我不想成为一个帮助吸血鬼:你不必为我编写代码。 我主要想知道我能做到这一点 我应该如何去回音字符串中的前5个div? 我会使用“file\u get\u contents”获取它,将它放入字符串中,解析它,然后回显它。 我将如何解析它?正则表达式?什么dom解析器 与此字符串类似: <div class="div">1</div><div class="div">2</div><div class="div">3</div>

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

我应该如何去回音字符串中的前5个div? 我会使用“file\u get\u 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>
12345结束!
非常感谢,, 干杯,如果你想坚持使用PHP,这可能是最好的选择。

试试以下方法:

  • 您可以添加根元素以使输入数据成为有效的XML并使用
    libxml(DOM、simplexml等)。但输入数据必须是有效的xml 数据(示例数据看起来有效,只需要根元素)
  • 一起使用strpos如果div的内容可以包含子字符串“div”或其他元素,最好使用一些解析器。我建议,它很简单,就像jQuery一样,但是对于php

    代码如下所示:

    echo pq('div:lt(5)', $string)->html()
    
    $string='12345end!';
    $dom=新的DOMDocument();
    $new_dom=新的DOMDocument;
    $dom->loadHTML($string);
    $count=0;
    foreach($dom->getElementsByTagName('div')作为$node)
    {
    $new_dom->appendChild($new_dom->importNode($node,TRUE));
    如果(++$count>=5)
    打破
    }
    echo$new_dom->saveHTML();
    
    不使用jQuery或第三方库,您可以使用PHP的类。

    jQuery切片

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

    如何使用jQuery
    。每个
    @tq都有很好的建议,但我要求使用PHP。很好的脚本,可能有用。。。但我会选择PHP。不过,我还是会投你一票phpQuery看起来很有趣,我将对此进行研究,但我更愿意用原始PHP完成这项工作。不过你还是得到了我的支持票。:)到目前为止,这是最好的答案。我想要原始PHP,这就是我得到的。谢谢。:)@SolèneLeVan,欢迎光临,请参见编辑。对其进行了优化,使其在第五个DIV之后停止循环,否则将不必要地循环到其他DIV。@晦涩难懂(顺便说一句,我是solenelevan,我只是因为提问而暂停了一段时间,但现在结束了)。啊,谢谢修理!我没有测试代码,所以我假设它在5号之后停止。。。顺便说一句,DOMDocument是内置在PHP中的,还是您必须安装一些外部的东西?@默认情况下,它与PHP绑定并启用,任何以这种方式禁用它的主机都是您不想使用的主机。如何使用strpos和substr实现这一点?你介意发布一个代码示例吗?谢谢你的代码!我最喜欢cryptic的答案,但既然你有166个名声,我会给你50个名声的奖励。(你可能知道,但是STACKOVERFLOW的悬赏给了某人一些你的名声。:)你只能在24小时内奖励悬赏,所以我会在24小时内这样做。。)
    $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();
    
    $(".topics .topic").slice(5).hide();