我有两个带有路径的文件:
/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();
谢谢