PHP诉诸tr';她在一张桌子上

PHP诉诸tr';她在一张桌子上,php,jquery,html,Php,Jquery,Html,我有一个相当大的表,我用php调用将它放在页面上 <?php include('7c2dsf12c24-4441e-532ded8-88dsc7-4fsd2c8.txt'); ?> 该文件包含数千个TR和TD。 文本文件每两小时动态创建和更新一次 有些行上有“featuredRow”类,这有助于设置样式。 但是,它们在该文本文件中以随机顺序出现 我需要对它们进行排序,以便首先显示特征行。基本上取所有行,将所有FeatureDrow放在表的顶部,然后是所有其他行 我已经有了按不同

我有一个相当大的表,我用php调用将它放在页面上

<?php include('7c2dsf12c24-4441e-532ded8-88dsc7-4fsd2c8.txt'); ?>

该文件包含数千个TR和TD。 文本文件每两小时动态创建和更新一次

有些行上有“featuredRow”类,这有助于设置样式。 但是,它们在该文本文件中以随机顺序出现

我需要对它们进行排序,以便首先显示特征行。基本上取所有行,将所有FeatureDrow放在表的顶部,然后是所有其他行

我已经有了按不同td字母顺序对表进行排序的javascript代码,但是由于它是前端排序,并且表由数千个tr组成(文本文件是7mb的文本),如果我一开始就对它进行过滤的话,这对Internet Explorer来说是一个很大的压力(用户希望在重新排列整个表时等待很长一段时间,但他不希望等待30秒,直到一切都安排妥当(在chrome上只有2-3秒,在IE上只有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中工作的最简单方法是什么

多谢各位

附言。 下面是html/php现在的样子-

下面是关于文本文件的两个tr的外观的另一个链接(文本文件中大约有3000-4000个tr)

编辑:原始代码将把“featuredRow”放在底部,而不是顶部,抱歉,现在已经修复了它(使用insertBefore而不是append)

编辑:原始代码将把“featuredRow”放在底部,而不是顶部,抱歉,现在已经修复了它(使用insertBefore而不是append)

$rows=file\u get\u contents('/path/to/rows.html');
$rows=explode('
$rows=file_get_contents('/path/to/rows.html');

$rows=explode('您可以使用DOM类读取html并对其进行排序。另一种方法是使用XSLT。您的文件只包含
行,或者它是一个完整的html?此外,示例是连贯的?换句话说,您是否只有两种行(
)?它只包含带有tds、文本和tr行中的内容的行。该表是在文本文件之外定义的。是的,只有两种类型的行:带类的行和空的行。请检查这些链接以获取示例,您可以使用DOM类读取html并对其排序。另一种方法是使用XSLT。您的文件包含只有
行或者它是一个完整的HTML?而且,示例是连贯的?换句话说,您是否只有两种行(
)?它只包含带有tds、文本和tr行中的内容的行。该表是在文本文件之外定义的。是的,只有两种类型的行:带类的行和空的行。请检查这些链接,以了解您认为sort()可以根据“哪些行包含”class=“featuredRow”进行排序的示例“把它放在标签里?哈哈,你一定是在开玩笑me@hanshenrik这取决于。我们正在等待OP响应。我们不知道文件内容假设他显示的样本是数据的真实样本是的。也就是说:(1)我们在每个tr后都有新行,(2)只有trs,并假设sort()排名空间高于>,我想是的,如果你是对的话,这是一个很酷的小技巧-编辑:哈哈,你是对的!(刚刚测试过)@majidouladpour你比我快!我将等待评论,看看这个解决方案是否可行。建议:使用
file()
而不是
file\u get\u contents()
。在这种情况下,它会更快。你真的认为sort()吗可以按“哪些行包含”class=“featuredRow”排序并将其保留在标记中吗?哈哈,你一定是在开玩笑吧me@hanshenrik这取决于。我们正在等待OP响应。我们不知道文件内容假设他显示的样本是数据的真实样本是的。也就是说:(1)我们在每个tr后都有新行,(2)只有trs,并假设sort()排名空间高于>,我想是的,如果你是对的话,这是一个很酷的小技巧-编辑:哈哈,你是对的!(刚刚测试过)@majidfoulapour你比我强!我将等待评论,看看这个解决方案是否可行。建议:使用
file()
而不是
file\u get\u contents()
。在这种情况下速度更快。感谢您的帮助,但我遇到以下错误:函数getElementsByTagName()在第83行的/home/usxjobs/public_html/wp content/themes/Divi Child/page-template-job-filter.php中的一个非对象上,我更新了原始文章,并在文章末尾添加了指向该结构示例的链接。感谢您的帮助,但我得到以下错误:函数getElementsByTagName()在第83行的/home/usxjobs/public_html/wp content/themes/Divi Child/page-template-job-filter.php中的一个非对象上,我更新了原始文章,并在文章末尾添加了指向该结构示例的链接。
$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();
$rows = file_get_contents('/path/to/rows.html');
$rows = explode('<tr', $rows);
sort($rows);
$rows = implode('<tr', $rows);