PHP读取zip中的所有文本文件,并将其保存到字符串变量中

PHP读取zip中的所有文本文件,并将其保存到字符串变量中,php,xml,text,zip,Php,Xml,Text,Zip,各位好,我再次来到这里寻求php编程方面的帮助。我对这门语言真的很陌生,但学得相当多。努夫说 无论如何,我现在有一个困难,我想读一个zip文件,里面有很多文件夹和文本文件,并保存在一个字符串变量(不是文本文件的名称!),文本文件本身的内容。这将为我提供一个完成任务的例子 具体来说,我实际上是在尝试读取zip中的所有xml文件。但是文本文件的示例会很好 这就是我目前拥有的: <?php function comment(){ $moodle = new Moodle();

各位好,我再次来到这里寻求php编程方面的帮助。我对这门语言真的很陌生,但学得相当多。努夫说

无论如何,我现在有一个困难,我想读一个zip文件,里面有很多文件夹和文本文件,并保存在一个字符串变量(不是文本文件的名称!),文本文件本身的内容。这将为我提供一个完成任务的例子

具体来说,我实际上是在尝试读取zip中的所有xml文件。但是文本文件的示例会很好

这就是我目前拥有的:

<?php

function comment(){

    $moodle = new Moodle();

    $zip = zip_open('qwerty.zip');


    if ($zip)
    {
        while ($zip_entry = zip_read($zip))
        {
            //echo "Name: " . zip_entry_name($zip_entry). "<br />";

            $data = zip_entry_read($zip_entry);

            $xml = new SimpleXMLElement($data);

            //echo $data;



        }
        zip_close($zip);
    }




}

comment();

?>

感谢所有在场的人。格雷西亚斯

更新

这实际上是精确的输出:

Warning: SimpleXMLElement::__construct(): Entity: line 28: parser error : expected '>' in D:\xampp\htdocs\project\index.php on line 47

Warning: SimpleXMLElement::__construct(): <component>mod_resource</compon in D:\xampp\htdocs\project\index.php on line 47

Warning: SimpleXMLElement::__construct(): ^ in D:\xampp\htdocs\project\index.php on line 47

Warning: SimpleXMLElement::__construct(): Entity: line 28: parser error : Opening and ending tag mismatch: component line 28 and compon in D:\xampp\htdocs\project\index.php on line 47

Warning: SimpleXMLElement::__construct(): <component>mod_resource</compon in D:\xampp\htdocs\project\index.php on line 47

Warning: SimpleXMLElement::__construct(): ^ in D:\xampp\htdocs\project\index.php on line 47

Warning: SimpleXMLElement::__construct(): Entity: line 28: parser error : Premature end of data in tag file line 25 in D:\xampp\htdocs\project\index.php on line 47

Warning: SimpleXMLElement::__construct(): <component>mod_resource</compon in D:\xampp\htdocs\project\index.php on line 47

Warning: SimpleXMLElement::__construct(): ^ in D:\xampp\htdocs\project\index.php on line 47

Warning: SimpleXMLElement::__construct(): Entity: line 28: parser error : Premature end of data in tag files line 2 in D:\xampp\htdocs\project\index.php on line 47

Warning: SimpleXMLElement::__construct(): <component>mod_resource</compon in D:\xampp\htdocs\project\index.php on line 47

Warning: SimpleXMLElement::__construct(): ^ in D:\xampp\htdocs\project\index.php on line 47

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in D:\xampp\htdocs\project\index.php:47 Stack trace: #0 D:\xampp\htdocs\project\index.php(47): SimpleXMLElement->__construct('<?xml version="...') #1 D:\xampp\htdocs\project\index.php(85): comment() #2 {main} thrown in D:\xampp\htdocs\project\index.php on line 47
警告:SimpleXMLElement::uu construct():实体:第28行:解析器错误:第47行的D:\xampp\htdocs\project\index.php中应为'>'

警告:SimpleXMLElement::_construct():mod_resource以上代码工作正常。问题在于xml文件。所有这些错误都来自xml验证程序

我终于明白了。谢谢你们帮我,伙计们。所以我就带着这个来了

函数moodlezip($zipfile){
回声“MOODLE”。
; $moodle=新moodle(); $zipfile='backup-moodle2-course-music_basic-20120806-1359b.mbz'; $zip=zip_open($zipfile); $ziparc=新ZipArchive; 如果($zip){ 而($zip\u entry=zip\u read($zip)){ $file=zip\u entry\u name($zip\u entry); //echo“Name:”.$file.“
”; if(strpos($file,'course.xml')!==false){ 如果($ziparc->open($zipfile)==TRUE){ $coursexml=newsimplexmlement($ziparc->getFromName($file)); $moodle->getCourse($coursexml); $ziparc->close(); }否则{ echo“失败”; } } else if(strpos($file,'forum.xml')!==false){ 如果($ziparc->open($zipfile)==TRUE){ $topicxml=newsimplexmlement($ziparc->getFromName($file)); $moodle->getTopic($topicxml); $ziparc->close(); }否则{ echo“失败”; } } else if(strpos($file,'questions.xml')!==false){ 如果($ziparc->open($zipfile)==TRUE){ $questionsxml=newsimplexmlement($ziparc->getFromName($file)); $moodle->getQuestions($questionsxml); $ziparc->close(); }否则{ echo“失败”; } } } zip_close($zip); } }
那么,错误在哪里呢?什么不起作用?这就是我自己想弄明白的。。这就是我得到的。致命错误:在D:\xampp\htdocs\project\index.php:47堆栈跟踪:#0 D:\xampp\htdocs\project\index.php(47):SimpleXMLElement->u构造中,未捕获异常“exception”,消息为“字符串无法解析为XML”(“听起来字符串不是有效的XML。抛出错误时,
$data
中有什么内容?你确定该.zip中只有XML文件吗?我同意字符串可能不是有效的XML。上面的代码在多目录zip中按预期(递归)工作。