我是goog好几个小时,但是找不到答案。请建议:
.html文件只包含以下段落中的用户评论:
<p>12/02/2012 4:32pm Mark</p>
<p>Hi! it's a nice demo! Really thankful</p>
<hr>
<p>11/02/2012 11:03am Miron</p>
<p>How to change the font size from CFD again?</p>
<hr>
<!-- AND LOADS OF OTHER <P><P> COMMENTS DELIMITED BY <HR> ... -->
有1000条评论的结构如下,
我想以某种方式获取最新的10(不是按日期,只是第一个'十'评论)。我不知道如何。
我知道我可以使用jQuery的.load('comments.html')
而不是删除所有元素但是前10个注释,或者甚至用PHP包含整个文件,而不是使用 jQuery执行.hide()
...但是加载整个文件只需10条评论是个好主意吗?
如何拆分该文件并从<div id="latest_10_comments"></div>
文件中获取comments.html
前10条评论?
答案 0 :(得分:2)
我知道你想要一个JavaScript解决方案但是你可以通过使用explode函数在PHP中完成这个。
这样的事情:
$comments = explode("<hr>", file_get_contents("/comments.html"));
for($i = 0; $i < 10; $i++) {
print($comments[$i]);
}
这将创建一个名为$ comments的数组,该数组是comments.html中由
分隔的每个注释<hr>
标签
答案 1 :(得分:1)
首先,我建议完全重新考虑你对这个问题的处理方法。为什么用这种方式存储HTML文件中的所有内容?如果要根据需要动态加载某些注释,则应将其存储为XML文件或将其存储在数据库中。
但是,要回答您的问题,如果您想在PHP中执行此操作,则需要使用PHP的DomDocument之类的X / HTML解析器。这是一个有效的例子......
编辑(已更改以反映OP的所需行为):
$dom = new DomDocument;
$dom->loadHTMLFile("comments.html");
// Get all the P tag elements in the DOM
$comments = $dom->getElementsByTagName('p');
// Get only the first 10
$amount = 10; // number of comments you want
foreach ($comments as $num => $comment_nodes) {
if ($num + 1 > $amount)
break;
echo $comment_nodes->nodeValue, PHP_EOL;
}
答案 2 :(得分:0)
$("<p>").each(function(index, value)
{
//Do what you want here
}
这将循环显示所有<p>
。如果您知道元素的顺序,那么您可以根据index
。
答案 3 :(得分:0)
解决方案1.您可以使用RegEx模式匹配2 p标签,然后是hr,并重复模式10次。
解决方案2。 来自其他答案(CHRIS)的想法,但由于PHP中存在错误,我建议这样做。
$comments = explode("<hr>", file_get_contents("/comments.html"));
for($i = 0; $i < 10; $i++) {
print($comments[$i]);
}