包含<! - ?xml |的问题图像相对路径的读文件问题 - >

时间:2013-01-11 12:30:16

标签: php xml include readfile

我有两个带路径的文件:

/reader.php
/ebook/titlepage.xhtml

我计划让读者最终阅读电子书toc.ncx,并能够在左侧窗格中显示它以便于导航。但是现在,我想要做的就是解决显示xhtml文件的问题。

电子书标题页开头如下:

    <?xml version='1.0' encoding='utf-8'?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>

问题出在我使用

include(/ebook/titlepage.xhtml);

我得到了意想不到的版本T_String,因为我的服务器设置为使用短打开标记

我试图在我的包含之前使用ini_set('short_open_tag', '0')无效 然后我尝试了readfile('ebook/titlepage.xhtml'),除了相对于reader.php引用的图像,而不是titlepage.xhtml中的相关内容。

我不想编辑任何电子书文件,因此使用echo <?xml...是不可能的;我最终希望将所有文件打包在ebook.epub中,并尝试使用php导航存档以读取和显示我的阅读器中的文件

我想我的问题是,如何在不编辑任何ebbok文件的情况下获取读取文件以使用相对于电子书的路径?或者我如何使用include和ignore

或者,也许有一种更好的方法让我不知道这里。也许是一种加载html文件并仅处理内部或仅仅是主体或头部和主体的东西的方法,因为我最终想要使用头部的样式和标题。

使用pasfree的回答更新(已解决)

我现在将HTML加载到domdocument中并在使用savehtml输出之前向头部添加基本标记

            //Load the ebook title page
            $doc = new DOMDocument();
            $doc->loadHTMLFile("{$_GET["book"]}/titlepage.xhtml");

            //Create the base element
            $base = $doc->createElement("base");
            $baseHref = $doc->createAttribute('href');
            $baseHref->value = "{$_GET["book"]}/";
            $base->appendChild($baseHref);

            //add <base...> to <head>
            $head = $doc->getElementsByTagName("head")->item(0);
            $head->appendChild($base);

            //output the page
            echo $doc->saveHTML();

由于

1 个答案:

答案 0 :(得分:1)

readfile()适用于插入文件内容。 您也可以使用file_get_contents()。

一个好的做法是在html文档中设置全局基础href,以便正确解析相对路径。

https://developer.mozilla.org/en-US/docs/HTML/Element/base