php domdocument getelementbyid,PHP DOMDocument- getElementByID添加Â代替空

PHP DOMDocument-> getElementByID添加Â代替空(PHP DOMDocument->getElementByID adding  in place of empty )

我正在使用PHP的DOMDocument对象来解析一些HTML(使用cURL获取)。 当我按ID获取元素并输出它时,任何空的 标记都会获得一个额外的字符并变为Â 。

代码:

$document = new DOMDocument();

$document->validateOnParse = true;

$document->loadHTML( curl_exec($handle) );

curl_close($handle);

$element = $document->getElementById( __ELEMENT_ID__ );

echo $document->saveHTML();

echo $document->saveHTML($element);

?>

$document->saveHTML()命令按预期运行并打印出整个页面。 但是,就像我上面说的那样,在echo $document->saveHTML($element)命令echo $document->saveHTML($element)空标签转换为Â 。

这发生在$element所有 标记中。

在这个过程中(通过ID获取元素并输出元素)是插入这个额外的字符? 我可以解决它,但我更感兴趣的是找到根。

I'm using PHP's DOMDocument object to parse some HTML (fetched with cURL). When I get an element by ID and output it, any empty tags get an additional character and become  .

The Code:

$document = new DOMDocument();

$document->validateOnParse = true;

$document->loadHTML( curl_exec($handle) );

curl_close($handle);

$element = $document->getElementById( __ELEMENT_ID__ );

echo $document->saveHTML();

echo $document->saveHTML($element);

?>

The $document->saveHTML() command behaves as expected and prints out the entire page. BUT, like I say above, on the echo $document->saveHTML($element) command transforms empty tags into  .

This happens to all tags within $element.

What in this process (of getting the element by ID and outputting the element) is inserting this extra character? I'm could work around it, but I'm more interested in getting to the root.

原文:https://stackoverflow.com/questions/13629351

更新时间:2019-11-29 11:57

最满意答案

我能够通过设置页面的字符编码来解决问题。 我提取的页面没有定义的字符编码,我的页面只是一个没有定义标题信息的片段。 当我添加

问题消失了。

I was able to fix the problem by setting the character encoding of the page. The page I was fetching did not have a defined character encoding, and my page was just a snippet without defined header info. When I added

The problem disappeared.

2012-11-30

相关问答

我能够通过设置页面的字符编码来解决问题。 我提取的页面没有定义的字符编码,我的页面只是一个没有定义标题信息的片段。 当我添加

问题消失了。 I was able to fix the problem by setting the character encoding of the page. The page I was

...

你可以使用DOMDocumentFragment和它的appendXML()方法,例如 <?php

$doc = new DOMDocument();

$doc->formatOutput = true;

$ele = $doc->createElement("someele", "Hello");

$xmlstuff = $doc->createElement("otherxmlstuff");

$fragment = $doc->createDocumentFragm

...

function getInnerHtml( $node ) {

$innerHTML= '';

$children = $node->childNodes;

foreach ($children as $child) {

$innerHTML .= $child->ownerDocument->saveXML( $child );

}

return $innerHTML;

}

$html = getInnerHtml($d

...

替换&nbsp; 与&amp; nbsp; 然后当读取htmlDom文档时,它将返回&nbsp; replace   with &nbsp; then when the htmlDom doc is read it will return  

您可以使用抑制解析错误的输出 libxml_use_internal_errors(true);

要检查返回的响应是否为404,您可以在调用DOMDocument::load()之后检查$http_response_header 例: libxml_use_internal_errors(true);

$rssDom = new DOMDocument();

$rssDom->load($url);

if (strpos($http_response_header[0], '404')) {

...

我认为,如果禁用外部实体加载器,则显然无法加载外部实体 。 唯一的解决方案是使用libxml_disable_entity_loader(false)启用外部实体的加载。 由于此设置不是线程安全的,我可以看到两种方法: 全局启用它并使用其他功能来阻止加载不需要的实体(通常来自网络): 使用libxml_set_external_entity_loader注册您自己的实体加载器。 我认为这是最安全的解决方案。 使用解析选项LIBXML_NONET 。 如果您只想禁用libxml2的网络访问,这应该足

...

知道了,不知道它是如何无效的 - 证明文件: $xpath = new \DOMXpath($document);

$nodes = $xpath->query('//img[@id="banner"]');

// Return content if we don't have exactly one image with id="banner"

if(1 !== $nodes->length) return $content;

// DOMNode of the banner

$banner

...

用这个: $str = file_get_contents('http://dream-portal.net/index.php/board,65.0.html');

$doc = new DOMDocument();

@$doc->loadHTML($str);

$selector = new DOMXPath($doc);

foreach ($selector->query('//*[starts-with(@id, "msg_")]') as $node) {

var_dump

...

尝试创建文件的用户不是“yurow”(可能有权创建该文件的用户)。 相反,它是一个用户,如“apache”或“httpd”。 通常,系统设置为禁止apache / httpd用户在Web根目录中创建文件。 这是出于安全目的而做的,我不建议通过给webroot提供apache / httpd写访问来绕过它。 相反,您可以在/ home / yurow内部创建文档(不在/ home / yurow / wwwroot内)。 一个例子可能是:/home/yurow/xmldata/test02.xml。

...

尝试以正确的格式编写HTML,使用双引号分隔的属性值,而不是单引号,因此它们不会被编码。 Javascript识别由单引号分隔的字符串。 这是一个例子: $html = 'click here';

$doc = new DOMDocument();

$doc->loadHTML( $html );

echo $html . "\n";

echo "-----------------\n";

e

...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334872.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 命令之 whois 命令-用于查找并显示用户信息

文章目录介绍参考示例介绍 whois指令会去查找并显示指定帐号的用户相关信息&#xff0c;因为它是到Network Solutions的WHOIS数据库去查找&#xff0c;所以该帐号名称必须在上面注册方能寻获&#xff0c;且名称没有大小写的差别。 参考示例 [rootlocalhost www]# whois root…

gptuefi优势_UEFI+GPT的区别,有啥不同?写的很详细易懂

搜索相关知识时看到的好文章&#xff0c;由于百度空间挂了&#xff0c;在此注明出处作者QQ:407647406以表谢意&#xff0c;原地址戳我其实楼主早就知道UEFI&#xff0c;曾经也一直关注并试图了解&#xff0c;无奈限于当时国内有关资料匮乏&#xff0c;实在找不到什么使用有效能…

oauth2和jwt_OAuth2,JWT,Open-ID Connect和其他令人困惑的事物

oauth2和jwt免责声明 如果觉得我必须从一个重要的免责声明开始这篇文章&#xff1a; 不要太相信我要说的话。 我之所以这样说&#xff0c;是因为我们正在讨论安全性。 而且&#xff0c; 当您谈论安全性时&#xff0c;除了100&#xff05;正确的陈述外&#xff0c;还有冒任何其他…

matlab的exec程序,C++调用Matlab画图的一段程序

劳动节闲来无事&#xff0c;写了一天程序&#xff0c;just for fun.看&#xff0c;这是C调用Matlab画图的一段程序。暂时不想多解释了&#xff0c;有兴趣的话&#xff0c;看看下面的代码吧。以下几段代码由上到下&#xff0c;越来越旧。最上面的是最新更新的版本。#include#inc…

Linux 命令之 iwconfig 命令-配置无线网络接口

文章目录介绍常用选项参考文档介绍 使用iwconfig命令可以为无线接口显示或设置网络接口的参数&#xff0c;它可以用来配置无线网络接口&#xff0c;是非常好用的。 常用选项 选项说明essid设置无线网卡的ESSID(Extension Service Set ID)。通过ESSID来区分不同的无线网络&am…

java gc cms_Java垃圾收集器:G1GC何时将CMS强制退出?

java gc cms在针对JDK 9&#xff08;2017/4/4&#xff09;提出的JEP中 &#xff0c; Mark Reinhold写道JEP 291 &#xff08;“弃用并发标记扫描&#xff08;CMS&#xff09;垃圾收集器”&#xff09;是“已被放置在在讨论和审查后&#xff0c;由所有者将其定位为目标”。 如果…

ios 高德地图加载瓦片地图_IOS 高德地图 API 加载 WMS 服务

IOS 高德地图 API 加载 WMS 服务本文主要介绍通过自定义高德地图 MATileOverlay 接口&#xff0c;添加 WMS 服务到地图上。废话少说&#xff0c;先贴代码。代码自定义类 WMSTileOverlayUtil&#xff0c;继承自高德地图接口 MATileOverlay&#xff0c;主要重载函数&#xff1a;-…

Linux 命令之 iwlist 命令-从无线网卡获取更详细的无线信息

文章目录介绍常用选项命令示例介绍 iwlist 命令用于对 /proc/net/wireless 文件进行分析&#xff0c;得出无线网卡相关信息。 常用选项 选项说明scanning搜索当前无线网络frequen显示频道信息rate显示连接速度power显示电源模式txpower显示功耗retry显示重试连接次数(网络不…

drools dmn_DMN 1.1 XML:从建模到使用Drools 7.0的自动化

drools dmn我是一名自由顾问&#xff0c;但今天我是一名博士生。 本文的全球背景是企业架构&#xff08;EA&#xff09;&#xff0c;它需要对企业进行建模。 由于EA的一个方面是业务流程建模&#xff0c;所以我使用BPMN已有数年之久&#xff0c;但是这种表示法并不十分适合表示…

矩阵期望 matlab,matlab中矩阵元素求和、求期望和均方差

在matlab中求一个矩阵中元素的和可以自己编写for循环来完成&#xff0c;这样比较方便&#xff0c;想求那些数据的和都可以做到&#xff0c;然而效率比较低&#xff0c;如果数据量大程序会跑好长时间。所以我们可以转而用matlab提供的sum函数。设M为一个矩阵&#xff0c;那么&am…

python默认字体大小_python – 如何设置PIL加载的默认字体的大小,使其适合我的8×8矩阵?...

我正在努力在88矩阵显示器上显示文本,而且我没有在我的BeagleBone上知道的.ttf文件.根据示例here,我应该能够说font ImageFont.load_default()而不是加载.ttf,但是,这显然不是指定字体的尺寸&#xff01;有什么办法吗&#xff1f;或者,是否有一个地方你知道我可以在我的BBB版本…

Linux 命令之 tcpdump -- 监听网络流量

文章目录命令介绍参考文档命令介绍 tcpdump 命令是一款 sniffer 工具&#xff0c;是 Linux 上的抓包工具&#xff0c;嗅探器&#xff1b;它可以打印出所有经过网络接口的数据包的头信息。 tcpdump 命令工作时先要把网卡的工作模式切换到混杂模式。所以 tcpdump 命令需要以 ro…

java args_Java命令行界面(第2部分):args4j

java args在上一篇文章中 &#xff0c;我研究了使用Apache Commons CLI在Java应用程序中解析命令行参数。 在本文中&#xff0c;我将使用另一个库args4j进行相同的操作。 args4j采用了一种不同于Commons CLI的方式来指定Java应用程序应期望的命令行参数。 尽管Commons CLI期望…

php点击后增加html元素,如何动态生成html元素以及为元素追加属性的方法介绍(附代码)...

本篇文章给大家分享的是关于如何动态生成html元素以及为元素追加属性的方法介绍(附代码)&#xff0c;内容很不错&#xff0c;有需要的朋友可以参考一下&#xff0c;希望可以帮助到大家。动态生成HTML元素的方法有三种&#xff1a;第一种&#xff1a;document.createElement()创…

excel npoi 连接_Net操作Excel_NPOI(示例代码)

Npoi 简介1.整个Excel表格叫做工作表&#xff1a;WorkBook(工作薄)&#xff0c;包含的叫页(工作表)&#xff1a;Sheet&#xff1b;行&#xff1a;Row&#xff1b;单元格Cell。4.忘了告诉大家npoi是做什么的了&#xff0c;npoi 能够读写几乎所有的Office 97-2003文件格式&#x…

apache camel_Apache Camel中的短重试与长重试

apache camel《骆驼设计模式》一书介绍了20种模式以及用于设计基于Apache Camel的集成解决方案的众多技巧和最佳实践。 每种模式都基于真实的用例&#xff0c;并提供了Camel特定的实现细节和最佳实践。 为了让您有这本书的感觉&#xff0c;以下是该书的重试模式摘录&#xff0c…

Linux 命令之 netstat -- 查看网络状态信息/显示网络状态

文章目录命令介绍常用选项参考示例&#xff08;一&#xff09;列出所有端口&#xff08;二&#xff09;列出所有 TCP 端口&#xff08;三&#xff09;列出所有 UDP 端口&#xff08;四&#xff09;只显示监听端口&#xff08;五&#xff09;只列出所有监听 tcp 端口&#xff08…

pyqt5 窗口设置圆角_Qt 的一些心得(背景设置,圆角,半透明)

一. 背景刷成黑色,前景色设为白色。 方法一、paltette方式&#xff0c;经测试&#xff0c;该方法不会影响到其他控件,推荐使用 QPalette bgpal palette();bgpal.setColor (QPalette::Background, QColor (0, 0 , 0, 255));//bgpal.setColor (QPalette::Background, Qt::transp…

java语言发展历史_Java编程语言的历史和未来

java语言发展历史通过AppDynamics解决应用程序问题的速度提高了10倍–以最小的开销在代码级深度监视生产应用程序。 开始免费试用&#xff01; 作为互联网上著名的编程语言 &#xff0c;Java对人们如何浏览数字世界产生了深远的影响。 Java功能设置了用户对他们访问互联网的设…

Linux 命令之 Bang(!) 命令

命令说明!!执行上一条命令^foo^ bar把上一条命令里的foo替换为bar&#xff0c;并执行!wget重复执行最近的以wget开头的命令!wget:p仅打印最近的以wget开头的命令&#xff0c;不执行!n执行历史命令列表第n条命令&#xff0c;例如执行第三条命令&#xff1a;!3!-n执行历史命令列表…