可能重复: 具有连字符名称的SimpleXML读取节点
我想更改xml,但这段代码失败了。
我认为在php中使用变量名(ID-1)是错误的。
chang.php
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
$xml->ID-1 = '8';
$xml->name = 'Big Cliff';
$xml->asXML('test2.xml');
echo $xml->asXML();
?>example.php
<?php
$xmlstr = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<film>
<ID-1>29</ID-1>
<name>adf</name>
</film>
XML;
?>发布于 2012-06-24 20:42:37
为什么这不起作用?
请参见php变量。变量中不可能有“-”。在PHP中,不能用连字符/破折号创建变量的问题一直是这样的(可能是任何C类型语言),因为该字符用于减法运算符。
http://www.php.net/manual/en/language.variables.basics.php
变量名称与PHP中的其他标签遵循相同的规则。有效的变量名以字母或下划线开头,后面跟着任意数量的字母、数字或下划线。
如果您使用UnderstanD Regex :作为正则表达式,则表示为:‘As _x7f-\xff*’
,如果我不能用'-‘?来控制元素名,该怎么办?
但是,在文档中,访问包含PHP命名约定不允许的字符的XML文档中的元素(例如连字符)可以通过将元素名称封装在大括号中来完成,而apostrophe.You可以将变量封装在{} for simple Xml elemnts中,以使这项工作看到一些很好的解释这里,这样您仍然可以通过更改来使其工作:
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
$xml->{'ID-1'} = '8';//change here
$xml->name = 'Big Cliff';
$xml->asXML('test2.xml');
echo $xml->asXML();
?>发布于 2012-06-24 20:53:22
更改这些行:
$xml->{"ID-1"}[0] = '8';
$xml->name[0] = 'Big Cliff'; https://stackoverflow.com/questions/11180937
复制相似问题