我使用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变量被忽略?为什么呢?
答案 0 :(得分:4)
你有一个对象,而不是一个数组。使用:
echo $info->message_id;
响应您的第二点 - 由于字符串封装在<
和>
中,浏览器会尝试将其显示为HTML,如果您查看页面的来源,您会看到您的$temp
字符串就在那里。
您可以使用htmlentities()将字符转换为HTML实体:
echo htmlentites($temp);
答案 1 :(得分:1)
除了deifwud所说的你有一个对象而不是一个数组(它们不像JavaScript一样可以互换),你还应该注意到浏览器将<blah blah blah>
形式的任何内容视为HTML标记,并且不显示原始格式。如果你去查看源,你会发现它就在那里。要避免此问题,请使用htmlspecialchars()
答案 2 :(得分:0)
同意@deifwud和@Kolink。你的字符串应该是:
$temp = htmlspecialchars('<CAKvS7sNb0Cb1AaAbCdEFGHerp5UyJuhfkcJj8P+8CZQj4VTGLA@mail.gmail.com>');
echo "::$temp::";
那将逃脱&lt;和&gt;这样浏览器就不会像标记一样对它们进行抨击。