__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> 標籤會被忽略。
以下任一種
$Text = $XML->span->__toString();
$Text = $XML->span[0]->__toString();
實際上等同於
$Text = ' world'; // 只會使用第一個 <span>。
$Text = $XML->span[1]->__toString();
實際上等同於
$Text = ' Good day!'; // 只會使用第二個 <span>。