0

我有两个带有路径的文件:

/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 文件的情况下获取读取文件以使用相对于电子书的路径?或者我如何使用包含和忽略

或者,也许有更好的方法,我在这里不知道。也许是一种加载 html 文件并仅处理其中的内容或仅处理正文或头部和正文的方法,因为我最终想使用 head 中的样式和标题。

使用 passfree 的答案更新(已解决)

我现在将 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();

谢谢


任何用于业务流程建模符号的开源库?

他们是我可以用于业务流程建模符号的任何开源库吗,允许用户创建图表,存储它们并在需要时检索它们。

4

1 回答 1

1

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

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

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

于 2013-01-11T12:36:39.017 回答