0

重複の可能性:
ハイフンでつながれた名前の SimpleXML 読み取りノード

xml を変更したいのですが、このコードでは失敗します。

PHPの変数(ID-1)の名前が間違っていると思います。

チャン.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;
?>
4

2 に答える 2

1

なぜこれが機能しないのですか?

PHP変数を参照してください。変数に「-」を含めることはできません。ハイフン/ダッシュを使用して変数を作成できないという点は、その文字が減算演算子に使用されるため、PHP (おそらくすべての C タイプ言語) で常にそのようになっています。

http://www.php.net/manual/en/language.variables.basics.php

変数名は、PHP の他のラベルと同じ規則に従います。有効な変数名は、文字またはアンダースコアで始まり、任意の数の文字、数字、またはアンダースコアが続きます。

正規表現を理解している場合: 正規表現として、次のように表現されます: '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'

「-」で要素名を制御できない場合はどうすればよいですか?

ただし、docsから、 PHP の命名規則で許可されていない文字 (ハイフンなど) を含む XML ドキュメント内の要素へのアクセスは、要素名を中括弧とアポストロフィでカプセル化することで実現できます。この作業を行うための Xml 要素ここでいくつかの良い説明を参照してください 。

<?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-24T20:42:37.863 に答える
0

これらの行を変更します。

$xml->{"ID-1"}[0] = '8';
$xml->name[0] = 'Big Cliff'; 
于 2012-06-24T20:53:22.943 に答える