Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >PHP无效字符错误

PHP无效字符错误
EN

Stack Overflow用户
提问于 2011-12-15 17:22:59
回答 3查看 18.8K关注 0票数 8

运行下面的代码时,我得到了这个错误:Fatal error: Uncaught exception 'DOMException' with message 'Invalid Character Error' in test.php:29 Stack trace: #0 test.php(29): DOMDocument->createElement('1OhmStable', 'a') #1 {main} thrown in test.php on line 29

原始XML文件中的节点确实包含无效字符,但是当我从节点中剥离无效字符时,应该创建这些节点。我需要对原始XML文档进行哪种类型的编码?我需要解码saveXML吗?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function __cleanData($c) 
{
    return preg_replace("/[^A-Za-z0-9]/", "",$c);
}
$xml = new DOMDocument('1.0', 'UTF-8');
$xml->load('test.xml');    
$xml->formatOutput = true; 

$append = array();
foreach ($xml->getElementsByTagName('product') as $product ) 
    {
        foreach($product->getElementsByTagName('name') as $name ) 
        {

            $append[] = $name;
        }
                foreach ($append as $a)  
                {
                    $nodeName = __cleanData($a->textContent);

                        $element = $xml->createElement(htmlentities($nodeName) , 'a');
                }
        $product->removeChild($xml->getElementsByTagName('details')->item(0));
        $product->appendChild($element);
    }

$result = $xml->saveXML();
$file = "data.xml";
file_put_contents($file,$result);

原始XML如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/v1/xsl/xml_pretty_printer.xsl" type="text/xsl"?>
<products>
<product>
<modelNumber>M100</modelNumber>
<itemId>1553725</itemId>
<details>
  <detail>
    <name>1 Ohm Stable</name>
    <value>600 x 1</value>
  </detail>
 </details>
</product>
 </products>

新文档应该是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/v1/xsl/xml_pretty_printer.xsl" type="text/xsl"?>
<products>
<product>
<modelNumber>M100</modelNumber>
<itemId>1553725</itemId>
  <1 Ohm Stable>

  </1 Ohm Stable>

  </product>
 </products>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-15 17:52:02

简单地说,您不能使用以数字开头的元素名称

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1OhmStable  <-- rename this
_1OhmStable <-- this is fine

php parse xml - error: StartTag: invalid element name

一篇很好的文章:- http://www.xml.com/pub/a/2001/07/25/namingparts.html

名称是以字母或几个标点符号之一开头,并以字母、数字、连字符、下划线、冒号或句号开头的标记,这些字符一起称为名称字符。

票数 16
EN

Stack Overflow用户

发布于 2011-12-15 17:47:18

即使__cleandata()将删除除拉丁字母a-z和数字之外的所有其他字符,也不一定保证结果是有效的XML名。您的函数可以返回以数字开头的字符串,但数字在XML中是非法的name start字符,它们只能出现在名称中的第一个名称字符之后。此外,名称中禁止使用空格,因此这是预期的XML输出失败的另一个原因。

票数 1
EN

Stack Overflow用户

发布于 2011-12-15 17:36:19

确保脚本具有相同的编码:如果是UTF,请确保它们在文件的开头没有字节顺序标记(BOM)。为此,请使用Notepad++之类的文本编辑器打开XML文件,然后将文件转换为"UTF-8格式,不带BOM“。

我也有过类似的错误,但使用的是json file

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8524111

复制
相关文章
Mybatis 批量更新无效字符的错误
使用<foreach></foreach> 批量insert时报错 ORA-00911: 无效字符的错误
三哥
2018/12/24
1.9K0
ora00904::标识符无效_ora-00911 无效字符
ORA:即Oracle报错。 标识符无效:SQL语句中,这个字段名不在表中。 解决方案:修改SQL语句中对应的字段或者修改表里面对应的列名。
全栈程序员站长
2022/11/01
1.4K0
ora00904::标识符无效_ora-00911 无效字符
PHP setcookie无效的原因分析
今天给某友友解决YoungxjTools时发现cookie怎么都写不进去,一开始怀疑是php空间有问题,各种改代码调试,没想到是cookie的问题,好吧,我认输 在setcookie之前加入即可 ob_start();//控制您的浏览器cache,加在setcookie代码之前,一般加在页面顶部 下面代码仅作记录,和本教程无关 ob_get_clean();//输出浏览器cache,看看结果是否存在cookie,加在setcookie代码之后,一般加在页面最后
Youngxj
2018/06/04
3.4K2
PHP丨setcookie无效的原因分析
今天给某友友解决YoungxjTools时发现cookie怎么都写不进去,一开始怀疑是php空间有问题,各种改代码调试,没想到是cookie的问题,好吧,我认输
V站CEO-西顾
2018/06/09
1.6K1
PHP错误日志
lukachen
2023/10/22
1590
PHP中文字符串反转编码错误解决方式
在使用PHP处理字符串反转的时候,我们第一反应是使用PHP的内置函数strrev来处理,思维上是没有问题的,但是我们需要知道一个问题,函数strrev是否可以处理中文汉字的字符串呢?带着疑问我们一起来看一下。
申霖
2020/06/20
1.1K0
PHP中文字符串反转编码错误解决方式
PHP中文字符串反转编码错误解决方式
在使用PHP处理字符串反转的时候,我们第一反应是使用PHP的内置函数strrev来处理,思维上是没有问题的,但是我们需要知道一个问题,函数strrev是否可以处理中文汉字的字符串呢?带着疑问我们一起来看一下。
申霖
2020/06/22
6020
PHP与500错误
PHP开发过程中经常会遇到返回500错误的情况,而且body体中也没有任何调试(可用)内容。这个时候你就需要慢慢调试了(打断点,开调试模式等),但如果是现网,这个错误就比较让人抓狂了,既不好打断点也不能开调试模式。但既然是错误,总是会有处理方法,下面就一步步分析500的成因及处理方案。
yaxin
2019/03/07
7.7K0
PHP与500错误
PHP错误与异常
图片 这篇文章基于PHP7 从PHP7起,PHP对异常做了较大改变,引入了Error,调整了继承结构Stringable这是个interface,只要能转字符串的类都应该实现这个接口Throwable能被throw抛出的最基本的接口,但是PHP不允许直接实现这个接口Exception所有用户级异常的基类,想要自定义异常就可以继承这个LogicException代码逻辑错误,就是代码写的不对BadFunctionCallException如果回调函数未定义或缺少参数的时候,抛出这个异常BadMethodCal
码一
2022/06/07
2.3K0
PHP错误与异常
asp.net mvc HandleErrorAttribute 异常错误处理 无效!
现象:filters.Add(new HandleErrorAttribute()); 使用了全局的异常处理过滤。
旺财的城堡
2018/11/20
1.2K0
【php】关闭PHP错误提示方法,防止错误信息泄露
我们都知道,php代码有时候可能因为我们的一些操作失误,导致报错,然后会暴露错误信息。 为了防止错误信息泄露,需要关闭php的错误提示。
吃猫的鱼Code
2023/02/02
2.2K0
IDEA报错 java: 错误: 无效的源发行版:17
报错如下图所示 这就是没设置好JDK版本,按照下图设置好即可。 好的,齐活儿。
程序员十三
2022/11/28
4.4K0
IDEA报错 java: 错误: 无效的源发行版:17
java 错误:非法字符:“\ufeff”
但是看代码也并没有非法字符,所以猜测是编码问题,在网上查了一下,有多种解决办法,思路就是讲编码格式改为UTF-8的。比如说我用的就是notepad++,选择标题栏的格式,将UTF-8格式编码修改为以UTF-8无BOM格式编码。再重新启动就可以了。
全栈程序员站长
2022/08/10
2.9K1
java 错误:非法字符:“\ufeff”
PHP字符串
htmlspecialchars()函数将会把一个字符串按照HTML实体输出(可以将字符串中特殊含义的字符转译为HTML实体)
Mirror王宇阳
2020/11/10
2K0
【php】php进行字符串替换
str_ireplace() 和 str_replace 使用新的字符串替换原来字符串中指定的特定字符串,str_replace 区分大小写,str_ireplace() 不区分大小写,两者语法相似。
吃猫的鱼Code
2023/02/02
3.4K0
[PHP] PHP 7.4.5的错误修复
PHP 7.4.5的错误修复 修复了错误#79364(复制空数组时,未指定下一个键)。 修复了错误#78210(无效的指针地址)。 curl: 修复了错误#79199(curl_copy_handle()内存泄漏)。 Date: 修复了错误#79396(DST向前跳转时,DateTime小时不正确)。 修复了错误#74940(DateTimeZone松散比较始终为true)。 FPM: 实现需求#77062(允许FPM监听数字[UG] ID。{owner,group})(Andre Nathan) Iconv: 修复了错误#79200(某些iconv函数截断Windows-1258)。 OPcache: 修复了错误#79412(Opcache阻塞并在特定脚本上造成100%CPU)。 session: 修复了错误#79413(session_create_id()对于活动会话失败) Shmop: 修复了错误#79427(shmop_open()中的整数溢出)。 SimpleXML: 修复了错误#61597(SXE属性可能缺少属性和内容)。 soap: 修复了错误#79357(缺少任何请求参数时SOAP请求段错误)。 Spl: 修复了错误#75673(SplStack :: unserialize()行为)。 修复了错误#79393(空合并运算符因SplFixedArray失败)。 标准: 修复了错误#79330(shell_exec()在空字节后会自动截断)。 修复了错误#79410(如果恰好是4095字节且没有换行符,system()会吞下最后一个块)。 修复了错误#79465(OOB读取urldecode())。(CVE-2020-7067) zip: 修复了错误#79296(ZipArchive :: open在空文件上失败)。 修复了错误#79424(调用globfree后php_zip_glob使用gl_pathc)。
唯一Chat
2020/04/24
1.6K0
PHP-错误处理
​ 语法错误最常见,并且也容易修复。如:代码中遗漏一个分号。这类错误会阻止脚本的执行。
汤清丽
2019/11/03
1.7K0
PHP-错误处理
gdb调试PHP扩展错误
有时候,使用PHP的第三方扩展之后,可能会发生一些错误,这个时候,可能就需要更底层的方式追踪调试程序发生错误的地方和原因,熟悉linux下C编程的肯定不陌生gdb
luxixing
2019/05/29
1.7K0
点击加载更多

相似问题

Firebase php无效字符值错误

12

PHP curl_setopt()错误无效字符

12

php: SimpleXML加载文件无效字符错误

23

错误:无效字符

14

php删除无效字符

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文