相关疑难解决方法(0)

PHP DOMDocument loadHTML没有正确编码UTF-8

我正在尝试使用DOMDocument解析一些HTML,但是当我这样做时,我突然失去了编码(至少这对我来说是这样).

$profile = "<div><p>various japanese characters</p></div>";
$dom = new DOMDocument();
$dom->loadHTML($profile); 

$divs = $dom->getElementsByTagName('div');

foreach ($divs as $div) {
    echo $dom->saveHTML($div);
}
Run Code Online (Sandbox Code Playgroud)

这段代码的结果是我得到了一堆不是日语的字符.但是,如果我这样做:

echo $profile;
Run Code Online (Sandbox Code Playgroud)

它显示正确.我尝试过saveHTML和saveXML,但都没有正确显示.我使用的是PHP 5.3.

我所看到的:

ã¤ãªãã¤å·ã·ã«ã´ã«ã¦ãã¢ã¤ã«ã©ã³ãç³»ã®å®¶åº­ã«ã9人åå¼ã®5çªç®ã¨ãã¦çã¾ãããå½¼ãå«ãã¦4人ã俳åªã«ãªã£ããç¶è¦ªã¯æ¨æã®ã»ã¼ã«ã¹ãã³ã§ãæ¯è¦ªã¯éµä¾¿å±ã®å®¢å®¤ä¿ã ã£ãã髿 ¡æä»£ã¯ã­ã£ãã£ã®ã¢ã«ãã¤ãã«å¤ãã¿ãæè²è³éãåããªããã«ããªãã¯ç³»ã®é«æ ¡ã¸é²å­¦ã
Run Code Online (Sandbox Code Playgroud)

应该展示什么:

???????????????????????9????5???????????????4???????????????????????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

编辑:我已将代码简化为五行,以便您自己测试.

$profile = "<div lang=ja><p>???????????????????????</p></div>";
$dom = new DOMDocument();
$dom->loadHTML($profile);
echo $dom->saveHTML();
echo $profile;
Run Code Online (Sandbox Code Playgroud)

这是返回的html:

<div lang="ja"><p>イリノイ州シカゴã«ã¦ã€ã‚¢ã‚¤ãƒ«ãƒ©ãƒ³ãƒ‰ç³»ã®å®¶åº­ã«ã€</p></div>
<div lang="ja"><p>???????????????????????</p></div>
Run Code Online (Sandbox Code Playgroud)

php utf-8 character-encoding

174
推荐指数
8
解决办法
9万
查看次数

如何将HTML插入PHP DOM对象?

我正在使用PHP的DOM对象为我的网站创建HTML页面.这对我来说非常有用,但是由于我将在身体中输入大量HTML(而不是通过DOM),我认为我需要使用DOM->createElement($bodyHTML)将我的HTML从我的网站添加到DOM对象.

DOM->createElement似乎解析所有HTML实体,所以我的最终结果最终显示在页面上的HTML而不是实际呈现HTML.

我目前正在使用hack来实现这一点,

$body = $this->DOM
             ->createComment('DOM Glitch--><body>'.$bodyHTML."</body><!--Woot");
Run Code Online (Sandbox Code Playgroud)

这将我的所有站点代码放在评论中,我在评论中绕过并手动添加<body>标签.

目前这种方法有效,但我相信应该有更合适的方法.理想情况下,类似的东西DOM->createElement()不会解析任何字符串.

我也试过使用DOM->createDocumentFragment()但是它不喜欢一些字符串所以它会出错并且不起作用(除了占用额外的CPU能力来重新解析正文的HTML).

所以,我的问题是,除了使用之外,还有更好的方法DOM->createComment()吗?

php dom

8
推荐指数
2
解决办法
1万
查看次数

PHP DOM将HTML附加到现有文档而不使用DOMDocumentFragment :: appendXML

我需要将一些任意HTML加载到现有DOMDocument树中.以前的答案建议使用DOMDocumentFragment及其appendXML方法来处理这个问题.

正如@Owlvark在评论中指出的那样,xml不是html,因此这不是一个好的解决方案.

我遇到的主要问题是像这样的实体&ndash导致错误,因为该appendXML方法需要格式良好的XML.

我们可以定义实体,但这并不能解决并非所有html都是有效的xml的问题.

将HTML导入DOMDocument树中的好方法是什么?

php tidy domdocument

4
推荐指数
1
解决办法
2656
查看次数

使用PHP将HTML插入div标签

我正在尝试将$ htmlString放入我现有的div标签中

<?php
    $htmlString = "<ul><li>some items</li><li>some items</li><li>some items</li></ul>";
    $dom = new domDocument;
    $dom->loadHTML($html);
    $div_tag = $dom->getElementById('demo');
    echo $dom->saveHTML($div_tag);
?>
Run Code Online (Sandbox Code Playgroud)

在div标签中,我已经有了一些内容,我想将$ htmlString附加到div标签中

<div id="demo"><h1>Recent Posts</h1></div>
Run Code Online (Sandbox Code Playgroud)

我希望输出是

<div id="demo"><h1>Recent Posts</h1>
<ul><li>some items</li><li>some items</li><li>some items</li></ul>
</div>
Run Code Online (Sandbox Code Playgroud)

由于$ htmlString实际上是从另一个函数产生的,所以我不能简单地做

<div id="demo">
<h1>Recent Posts</h1>
    <?php echo "<ul><li>some items</li><li>some items</li><li>some items</li></ul>" ?>
</div> 
Run Code Online (Sandbox Code Playgroud)

html php

4
推荐指数
1
解决办法
2641
查看次数

标签 统计

php ×4

character-encoding ×1

dom ×1

domdocument ×1

html ×1

tidy ×1

utf-8 ×1