强制 SimpleXML 对象为字符串,而不考虑上下文

2022-08-30 08:21:26

假设我有一些像这样的XML

<channel>
  <item>
    <title>This is title 1</title>
  </item>
</channel>

下面的代码做了我想要的,因为它将标题输出为字符串

$xml = simplexml_load_string($xmlstring);
echo $xml->channel->item->title;

这是我的问题。下面的代码在该上下文中不将标题视为字符串,因此我最终在数组中得到了一个 SimpleXML 对象,而不是一个字符串。

$foo = array( $xml->channel->item->title );

我一直在像这样解决它

$foo = array( sprintf("%s",$xml->channel->item->title) );

但这似乎很丑陋。

无论上下文如何,将 SimpleXML 对象强制为字符串的最佳方法是什么?


答案 1

将 SimpleXMLObject 类型转换为字符串:

$foo = array( (string) $xml->channel->item->title );

上面的代码在内部调用 SimpleXMLObject。此方法不公开可用,因为它会干扰 SimpleXMLObject 的映射方案,但仍可以按上述方式调用。__toString()


答案 2

您可以使用 PHP 函数

strval();

此函数返回传递给它的参数的字符串值。


推荐