使用PHP输出缓冲区替换HTML元素非常慢
下午好 我使用PHP的输出缓冲区来搜索并增量替换HTML文档中的HTML标记。我的职能:使用PHP输出缓冲区替换HTML元素非常慢,php,html,buffer,Php,Html,Buffer,下午好 我使用PHP的输出缓冲区来搜索并增量替换HTML文档中的HTML标记。我的职能: function fonorpl($buffer) { $count = 1; $fonorep = preg_replace_callback( '/<span class="fn">(.*?)<\/span>/', function($m) use (&$count) { $inkr = $coun
function fonorpl($buffer) {
$count = 1;
$fonorep = preg_replace_callback(
'/<span class="fn">(.*?)<\/span>/',
function($m) use (&$count) {
$inkr = $count++;
$fonotext = '<span class="fonohlf" id="fna'.$inkr.'"><a name="fna'.$inkr.'" href="#fn'.$inkr.'">'.$inkr.'</a>';
return $fonotext;
},
$buffer);
return $fonorep;
}
ob_start("fonorpl");
函数fonorpl($buffer){
$count=1;
$fonorep=preg\u replace\u回调(
'/(.*?)/',
函数($m)使用(&$count){
$inkr=$count++;
$fonotext='';
返回$fonotext;
},
美元缓冲);
返回$fonorep;
}
ob_启动(“fonorpl”);
该函数包含在文档的第一行中,基本上查找…
元素,并用递增的数字替换它们。这个数字链接到页面底部所有元素的列表,该列表由另一个函数创建(这不是我的问题的原因,因此这里不再进一步提及)
当在包含大量文本(约377000个字符)和约380KB文件大小的页面上使用此功能时,最多需要15秒才能完全加载页面。在其他包含1000000多个字符且大小>1000 KB的页面上,页面加载在1秒以下完成
我只是想知道这是ob_buffer和大量文本的问题,还是我使用的preg_replace_回调函数的问题
我试图删除一些(较大的)文本段落,以排除与此相关的任何联系,但这似乎没有任何效果。我还删除了文档中包含的PHP,但这也没有效果。
我想知道这里是否有人可以就这件事向我提出建议?为什么不更正创建错误html的代码,而不是重新处理it@RiggsFolley:因为我不想在页面开头添加或删除一些脚注时手动更改所有~500个脚注。因此,我希望通过PHP在服务器端自动完成编号。似乎您最好使用一个批量文件编辑脚本,该脚本将一次性修复这些脚注。@El_Vanja:脚注不需要修复。它们在键入文本时包括在内,如blahblah。我只是用一个数字替换“blahblah”部分。“blahblah”部分是实际的脚注文本,显示在页面底部的表格中,文本中有相应的数字。据我所知,这与Latex使用的原理基本相同。啊,这包括某种编辑器?对不起,我误解了目的。文本是否与html一起存储?在开始更换之前,它是如何加载的?也许有更好的解决办法。