__toString() 不打算直接调用。
相反,它定义了在将对象强制转换为字符串时返回的内容,无论是显式地使用
(string)$element
还是隐式地,在某些会导致转换为字符串的上下文中。
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
SimpleXMLElement::__toString — 返回字符串内容
此函数没有参数。
成功时返回字符串内容,失败时返回空字符串。
示例 #1 获取字符串内容
<?php
$xml = new SimpleXMLElement('<a>1 <b>2 </b>3</a>');
echo $xml;
?>
上面的示例将输出
1 3
__toString() 不打算直接调用。
相反,它定义了在将对象强制转换为字符串时返回的内容,无论是显式地使用
(string)$element
还是隐式地,在某些会导致转换为字符串的上下文中。
[有人删除了另一个 Patanjali 的说明,因为它有错误!:-(]
对于那些可能没有从示例中立即明白的人来说,echo 是强制使用 __toString() 的原因。
但是,要将节点的文本(但不包括其子节点)分配给变量
$XML = new SimpleXMLElement('<p>Hello<span> world</span>.<span> Good day!</span></p>');
$Text = $XML->__toString();
实际上是
$Text = 'Hello.'; // <span>s 被忽略了。
以下任何一种
$Text = $XML->span->__toString();
$Text = $XML->span[0]->__toString();
实际上是
$Text = ' world'; // 只使用第一个 <span>。
$Text = $XML->span[1]->__toString();
实际上是
$Text = ' Good day!'; // 只使用第二个 <span>。
对于那些可能没有从示例中立即明白的人来说,要将节点的文本(但不包括其子节点)分配给变量
$XML = new SimpleXMLElement('<p>Hello<span> world</span>.<span> Good day!</span></p>');
以下任何一种
$Text = $XML;
$Text = $XML->__String();
实际上是
$Text = 'Hello.'; // <span>s 被忽略了。
以下任何一种
$Text = $XML->span;
$Text = $XML->span[0];
实际上是
$Text = ' world'; // 只使用第一个 <span>。
$Text = $XML->span[1];
实际上是
$Text = ' Good day!'; // 只使用第二个 <span>。