Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP输出缓冲区替换HTML元素非常慢_Php_Html_Buffer - Fatal编程技术网

使用PHP输出缓冲区替换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

下午好

我使用PHP的输出缓冲区来搜索并增量替换HTML文档中的HTML标记。我的职能:

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一起存储?在开始更换之前,它是如何加载的?也许有更好的解决办法。