我有两个带路径的文件:
/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();
由于
答案 0 :(得分:1)
readfile()适用于插入文件内容。 您也可以使用file_get_contents()。
一个好的做法是在html文档中设置全局基础href,以便正确解析相对路径。