1

我正在使用 var_dump 打印一个名为 $info 的变量。现在我需要打印 message_id 如下所示,但字符串没有被打印。

object(stdClass)[10]
  public 'date' => string 'Sun, 14 Oct 2012 19:45:26 +0100' (length=31)
  public 'Date' => string 'Sun, 14 Oct 2012 19:45:26 +0100' (length=31)
  public 'subject' => string 'deposit' (length=7)
  public 'Subject' => string 'deposit' (length=7)
  public 'message_id' => string '<CAKvS7sNb0Cb1AaAbCdEFGHerp5UyJuhfkcJj8P+8CZQj4VTGLA@mail.gmail.com>' (length=68)
  public 'toaddress' => string 'sbsa secretaccount <test@gmail.com>' (length=43)

我正在使用这条线,

echo $info->message_id;

另外,如果我尝试这个,

$temp =  '<CAKvS7sNb0Cb1AaAbCdEFGHerp5UyJuhfkcJj8P+8CZQj4VTGLA@mail.gmail.com>';
echo "::$temp::";

只有 :::: 被打印, $temp 变量被忽略?为什么?

4

3 回答 3

4

你有一个对象,而不是一个数组。采用:

echo $info->message_id;

php.net - 对象

作为对第二点的回应 - 由于字符串被封装在<and>中,浏览器将尝试将其显示为 HTML,如果您查看页面的源代码,您将看到您的$temp字符串在那里。

您可以使用htmlentities()将字符转换为 HTML 实体:

echo htmlentites($temp);
于 2012-10-14T20:06:53.923 回答
1

除了 deifwud 所说的你有一个对象而不是一个数组(它们不能像 JavaScript 中那样互换),你还应该注意任何形式的东西都<blah blah blah>被浏览器视为 HTML 标记并且不会显示生的。如果你去查看源代码,你会看到它就在那里。为避免此问题,请使用htmlspecialchars()

于 2012-10-14T20:09:19.773 回答
0

同意@deifwud 和@Kolink。你的字符串应该是:

   $temp = htmlspecialchars('<CAKvS7sNb0Cb1AaAbCdEFGHerp5UyJuhfkcJj8P+8CZQj4VTGLA@mail.gmail.com>');
   echo "::$temp::";

这将转义 < 和 > 以便浏览器不会像标记一样将它们融入其中。

于 2012-10-14T20:13:16.390 回答