2

我不想成为帮助吸血鬼:你不必为我编写代码。我主要想知道我可以使这成为可能。

我应该如何回显字符串中的前 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>

非常感谢,加油

4

5 回答 5

1

试试这个:

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

更新: 这里使用 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);
于 2012-12-29T00:08:23.587 回答
0

如果您想坚持使用 PHP,strpossubstr可能是最好的方法。

于 2012-12-29T00:05:06.840 回答
0

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

代码将如下所示:

echo pq('div:lt(5)', $string)->html()
于 2012-12-29T00:10:19.700 回答
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 或 3rd 方库。

于 2012-12-29T00:14:03.910 回答
-1

jQuery切片

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

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

于 2012-12-29T00:15:03.653 回答