file_get_contents () злоупотреблять - PullRequest
0 голосов
/ 15 февраля 2011

Это я не могу понять.В двух словах, у меня есть веб-страница, которая будет меняться в зависимости от установленных переменных $ _GET.При создании веб-страницы есть 2 меню на выбор.Эти меню хранятся в html-файлах.

Вот строка, которая читает этот файл.

$template->set('menu',file_get_contents('../gamefiles/site_menu.html'));

Вот функция, которую выполняет эта строка.

function set($div,$data)
{
    $result = $this->xpath->query("//div[@id = '".$div."']");
    $node = $result->item(0);
    $node->nodeValue = $data;
    $this->dom->saveHTML();
}

Вот то, что находится в файле меню.

<a href=''><div>Home</div></a><br />
<a href=''><div>Documentation</div></a><br />
<a href=''><div>Support</div></a><br />
<a href=''><div>Affiliates</div></a><br />
<a href=''><div>Sign up!</div></a><br />

, и вот где моя проблема ... по некоторым причинам он возвращает

&lt;a href=''&gt;&lt;div&gt;Home&lt;/div&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=''&gt;&lt;div&gt;Documentation&lt;/div&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=''&gt;&lt;div&gt;Support&lt;/div&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=''&gt;&lt;div&gt;Affiliates&lt;/div&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=''&gt;&lt;div&gt;Sign up!&lt;/div&gt;&lt;/a&gt;&lt;br /&gt;

file_get_contents (), когда используется одинвозвращает правильное значение, которое заставляет меня поверить, что функция DOMXPath что-то с этим делает.Я довольно озадачен.

есть идеи?заранее спасибо

РЕДАКТИРОВАТЬ

добавив метод конструкции, который создает DOMDoc

function __CONSTRUCT($template)
{
    $this->dom = new DomDocument();
    $this->dom->loadHTML(file_get_contents($this->template_dir.$template));
    $this->xpath = new DomXPath($this->dom);
}

1 Ответ

0 голосов
/ 15 февраля 2011

Не уверен, какую кодировку вы отправляете в шапке, но я сталкивался с чем-то похожим раньше, и это было проблемой.Попробуйте использовать:

header('Content-Type: text/html; charset=UTF-8');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...