【发布时间】:2017-08-11 11:42:31
【问题描述】:
我得到了这个代码:
function importXML($filename){
if(file($filename)) $xml_file = file($filename);
else umar(97);
$content = substr($xml_file[1], strpos($xml_file[1], "<office:spreadsheet>"), strpos($xml_file[1], "</office:spreadsheet>") - strpos($xml_file[1], "<office:spreadsheet>"));
$arr = array();
$arr2 = array();
$check = strripos($content, "</table:table-row>") + 18;
$offset = 0;
while($offset != $check){
$start2 = strpos($content, "<table:table-row ", $offset);
$end2 = strpos($content, "</table:table-row>", $offset);
$offset = $end2 + 18;
array_push($arr2, $start2, $end2);
array_push($arr, substr($content, $start2, $end2-$start2));
}
return json_encode($arr);
}
还有这一行
$check = strripos($content, "</table:table-row>") + 18;
返回错误
允许的内存大小134217728字节用尽(尝试分配58887728字节)
我正在处理 58893135 字节的文件。
在 php.ini 中设置
memory_limit=128M
所以我想知道为什么会出现此错误,以及如何摆脱它。
【问题讨论】:
-
曾经不得不编写
while (true)行代码是一个危险信号。 -
谢谢,我改成
while($offset != $check),如果在循环里面就删了。不知道我为什么这样做,但主要问题仍然存在。
标签: php