Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理,;以及SimpleXML PHP中的其他特殊字符_Php - Fatal编程技术网

如何处理,;以及SimpleXML PHP中的其他特殊字符

如何处理,;以及SimpleXML PHP中的其他特殊字符,php,Php,我使用SimpleXMLElement创建xml,但它无法处理&。这是我的密码 $contacts = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><Contacts></Contacts>'); $name = $contacts->addChild('name', 'You & Me'); $name->addAttribute('no', '1'); echo

我使用SimpleXMLElement创建xml,但它无法处理&。这是我的密码

$contacts = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><Contacts></Contacts>');
$name = $contacts->addChild('name', 'You & Me');
$name->addAttribute('no', '1');
echo $contacts->asXML();
$contacts=新的SimpleXMLElement(“”);
$name=$contacts->addChild('name','You&Me');
$name->addAttribute('no','1');
echo$contacts->asXML();
这是输出

<?xml version="1.0" encoding="UTF-8"?>
<Contacts><name no="1">You </name></Contacts>

如何解决这个问题。我需要所有特殊字符的解决方案。

您必须将其替换为html代码或选中此选项

$contacts=新的SimpleXMLElement(“”);
$name=$contacts->addChild('name','You&;Me');
$name->addAttribute('no','1');
echo$contacts->asXML();
您还可以使用函数htmlspecialchars来执行此操作

$contacts = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><Contacts></Contacts>');
$name = $contacts->addChild('name', htmlspecialchars('You & Me', ENT_QUOTES, "utf-8"));
$name->addAttribute('no', '1');
echo $contacts->asXML();
$contacts=新的SimpleXMLElement(“”);
$name=$contacts->addChild('name',htmlspecialchars('You&Me',entu引号,“utf-8”);
$name->addAttribute('no','1');
echo$contacts->asXML();

这应该在不使用html代码的情况下对您有效,因为这样它会自动转义:

(因为
addChild()
只转义
,而不转义
&

$contacts=新的SimpleXMLElement(“”);
$contacts->name[0]=“你和我”;
$contacts->name[0]->addAttribute('no','1');
echo$contacts->asXML();
输出(源代码):


你及;我

如果我有一个以上同名的孩子,那么该怎么办???@Md.Yusuf然后确保这样指定:
$contacts->name[2]=“You&Me”
如果您不知道号码,只想添加一个,请执行以下操作:
$contacts->name[]='you&Me'
@Md.Yusuf顺便说一句:如果您想要完整解释为什么会这样处理,请参见:
$contacts = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><Contacts></Contacts>');
$name = $contacts->addChild('name', htmlspecialchars('You & Me', ENT_QUOTES, "utf-8"));
$name->addAttribute('no', '1');
echo $contacts->asXML();
$contacts = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><Contacts></Contacts>');
$contacts->name[0] = 'You & Me';
$contacts->name[0]->addAttribute('no', '1');
echo $contacts->asXML();
<?xml version="1.0" encoding="UTF-8"?>
<Contacts><name no="1">You &amp; Me</name></Contacts>