PHP Conference Japan 2024

SimpleXMLElement::__toString

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

SimpleXMLElement::__toString回傳字串內容

說明

public SimpleXMLElement::__toString(): 字串

回傳此元素中直接包含的文字內容。不回傳此元素子元素內的文字內容。

參數

此函式沒有參數。

回傳值

成功時回傳字串內容,失敗時回傳空字串。

範例

範例 #1 取得字串內容

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

以上範例會輸出

1 3

另請參閱

新增註解

使用者貢獻的註解 2 則註解

mmj at example dot net
7 年前
__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> 標籤會被忽略。

以下任一種
$Text = $XML->span->__toString();
$Text = $XML->span[0]->__toString();

實際上等同於
$Text = ' world'; // 只會使用第一個 <span>。

$Text = $XML->span[1]->__toString();

實際上等同於
$Text = ' Good day!'; // 只會使用第二個 <span>。
To Top