我正在编写一些导出来将内容从我们的自定义Symfony CMS移动到基于Craft CMS构建的新网站。
要将文章分解为单独的字段,我使用DOMDocument循环遍历元素。这一切似乎都在起作用 - 倾销内容然后退出显示我期望的内容。然后我准备一个响应并将其传递给视图模板并将其转储出来,我的字符变形不正确。
我假设这与字符编码有关,但我不确定如何。
控制器中的代码:
$response = new Response();
$response->headers->set('Content-Type', 'xml');
return $this->render('FrontBundle:Export:articles.html.twig', array(
'pages' => $pages
), $response);
正如我所说,$ pages已经准备好了DOMDocument,并在从控制器中转出时按预期显示。 e.g:
它很难,很艰苦,很费力
当这个传递给视图时,我得到这个输出:
它很难,它很艰苦而且很费力
这是由此产生的:
<?xml version="1.0" encoding="UTF-8"?>
<pages>
{% for page in pages %}
<page>
<title>{{ page.title }}</title>
<intro>{{ page.article.intro|join('') }}</intro>
<article>
{% for block in page.article.body %}
<block>
<heading>{{ block.heading }}</heading>
</block>
<block>
<content>{{ block.content }}</content>
</block>
{% endfor %}
</article>
</page>
{% endfor %}
</pages>
虽然我也不认为这是一个XML问题,因为如果我不设置内容类型并将视图剥离到{{ dump(pages) }}
所以我完全陷入困境 - 任何建议都会非常感激!
答案 0 :(得分:0)
在其中一条评论的背面,我发现需要反复指定UTF-8。
之后,这只是在每次操作后回显内容的情况,似乎是DOMDocument的责任。
对于任何有同样问题的人,这里的答案是为我解决的问题:PHP DOMDocument loadHTML not encoding UTF-8 correctly
具体而言,$dom->loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8'));
另请注意,似乎你不能依赖var_dump来查看内容是否正常,即使在DOMDocument搞砸了正确显示文本之后也是var_dump,但循环并回显它会显示问题。< / p>