我有一个XML数据源URL,我正在使用fread读取数据。它包含学生信息,我从中提取成绩并在数组中编译它们。
问题是当我在本地运行此脚本时,它工作正常,所有等级都在数组中正确列出/收集。但是,当我在共享服务器上运行此脚本时,除了正常的成绩名称之外,我还会获得一些错误的阅读成绩,例如“ergarten”。完整的等级名称“幼儿园”也记录在阵列中,这意味着只读取特定元素存在问题。
我想到的第一个嫌疑人是字节长度。我已将其更改为8192但没有运气。
以下是php文件中的相关代码块:
if (!($xml_parser = xml_parser_create())) die("Couldn't create parser.");
xml_set_element_handler( $xml_parser, "startElementHandler", "endElementHandler");
xml_set_character_data_handler( $xml_parser, "characterDataHandler");
while( $data = fread($fp, 8192)){
if(!xml_parse($xml_parser, $data, feof($fp))) {
break;}}
xml_parser_free($xml_parser);
有什么想法吗?
答案 0 :(得分:0)
我发现了问题并自行修复了。
问题在于,在使用fread以块的形式读取数据的循环中,我同时使用XML解析器转换该数据,这导致了问题,因为数据流并不总是具有完整的标记。我从该点删除了解析器,只有在脚本读取了所有数据时才运行它。
解决了这个问题。