我有一个非常大的表,我把它放在页面上用php调用
<?php include('7c2dsf12c24-4441e-532ded8-88dsc7-4fsd2c8.txt'); ?>
该文件中包含数以千计的TR和TD。 文本文件每隔几个小时动态创建和更新。
有些行有&#34; featuredRow&#34;他们上课,这有助于造型。 但是,它们在该文本文件中以随机顺序出现。
我需要对它们进行排序,以便首先显示特征行。基本上取所有行,并将所有featuresRows放在表的顶部,然后是所有其他行。
我已经有了javascript代码,按字母顺序按不同的td对表进行排序,但由于它是一个前端排序,并且该表由数千个tr(文本文件为7mb的文本)组成),如果我最初要过滤它,那么它在Internet Explorer上是一个很大的压力(用户期望在重新排序整个表时等待很长时间,但是他不会等待30秒,直到所有订单都正确(仅限) IE上2-3秒的镀铬时间是20-30秒。)
因此,我认为在后端执行此操作,并立即显示重新排序的文本文件将更好,而不是使用dom,创建大型数组并使用户的浏览器滞后。
TL / DR 例如,文件的结构如下所示:
<tr><td></td><td></td></tr>
<tr class="featuredRow"><td></td><td></td></tr>
<tr><td></td><td></td></tr>
<tr><td></td><td></td></tr>
<tr class="featuredRow"><td></td><td></td></tr>
<tr class="featuredRow"><td></td><td></td></tr>
<tr><td></td><td></td></tr>
<tr class="featuredRow"><td></td><td></td></tr>
<tr><td></td><td></td></tr>
我需要获取该文件并将结构重新排序为:
<tr class="featuredRow"><td></td><td></td></tr>
<tr class="featuredRow"><td></td><td></td></tr>
<tr class="featuredRow"><td></td><td></td></tr>
<tr class="featuredRow"><td></td><td></td></tr>
<tr><td></td><td></td></tr>
<tr><td></td><td></td></tr>
<tr><td></td><td></td></tr>
<tr><td></td><td></td></tr>
<tr><td></td><td></td></tr>
我不想使用JS,因为有数千行,兆字节的数据,并且在IE上需要很长时间才能在前端执行。
在PHP中使用它的最简单方法是什么?
谢谢
P.S。 以下是html / php现在的样子 - jsfiddle.net/1pggwuah
以下是关于两个文本文件的外观的另一个链接(文本文件中有大约3,000-4,000个这样的文件)jsfiddle.net/a308w8b6
答案 0 :(得分:2)
$rows = file_get_contents('/path/to/rows.html');
$rows = explode('<tr', $rows);
sort($rows);
$rows = implode('<tr', $rows);
答案 1 :(得分:0)
$domd=@DOMDocument::loadHTMLFile('7c2dsf12c24-4441e-532ded8-88dsc7-4fsd2c8.txt');
$masterele=$domd->getElementsByTagName("table")->item(0);
foreach($domd->getElementsByTagName("tr") as $trele){
if($trele->getAttribute("class")!=="featuredRow"){continue;}
$trele->parentNode->removeChild($trele);
$masterele->insertBefore($trele,$masterele->firstChild);
}
echo $domd->saveHTML();
编辑:原始代码将“featuredRow”放在底部,而不是顶部,抱歉,现在修复它(使用insertBefore而不是追加)