SimpleXMLElement::__toString

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SimpleXMLElement::__toString返回字符串内容

描述

public SimpleXMLElement::__toString(): string

返回此元素中直接存在的文本内容。不返回此元素子级内部的文本内容。

参数

此函数没有参数。

返回值

成功时返回字符串内容,失败时返回空字符串。

示例

示例 #1 获取字符串内容

<?php
$xml
= new SimpleXMLElement('<a>1 <b>2 </b>3</a>');
echo
$xml;
?>

上面的示例将输出

1 3

参见

添加说明

用户贡献的说明 3 个说明

mmj at example dot net
6 年前
__toString() 不打算直接调用。

相反,它定义了在将对象强制转换为字符串时返回的内容,无论是显式地使用

(string)$element

还是隐式地,在某些会导致转换为字符串的上下文中。
Patanjali
8 年前
[有人删除了另一个 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>。
Patanjali
8 年前
对于那些可能没有从示例中立即明白的人来说,要将节点的文本(但不包括其子节点)分配给变量

$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>。
To Top