首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在php中更改xml值,但用节点名id-7更改false。

在php中更改xml值,但用节点名id-7更改false。
EN

Stack Overflow用户
提问于 2012-06-24 20:22:51
回答 2查看 92关注 0票数 0

可能重复: 具有连字符名称的SimpleXML读取节点

我想更改xml,但这段代码失败了。

我认为在php中使用变量名(ID-1)是错误的。

chang.php

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<?php
$xmlstr = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<film>
  <ID-1>29</ID-1>
  <name>adf</name>
  </film>
XML;
?>
EN

回答 2

Stack Overflow用户

发布于 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中,以使这项工作看到一些很好的解释这里,这样您仍然可以通过更改来使其工作:

代码语言:javascript
复制
<?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(); 
?>
票数 1
EN

Stack Overflow用户

发布于 2012-06-24 20:53:22

更改这些行:

代码语言:javascript
复制
$xml->{"ID-1"}[0] = '8';
$xml->name[0] = 'Big Cliff'; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11180937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档