【发布时间】:2013-03-26 06:54:38
【问题描述】:
我有一个功能,旨在将邮件从一个文件夹移动到 gmail 帐户上的另一个文件夹。 该功能在移动邮件时功能齐全。我的问题出现在什么时候 使用 utf-8 编码的邮箱。我解码 IMAP 文件夹列表响应 但是两个值的转储会给出不同的结果。
// Getting the folders
$folders = imap_list(CONNECTION, MAILBOX, PATTERN);
// After a foreach, stripping slash, prefix and such
// $folder is the raw mailbox name from the IMAP list
$mailbox = utf8_encode(imap_utf7_decode($folder)); // = string(12) "Tæstbåks"
// The entered search from the client
$search_for = "Tæstbåks"; // = string(10) "Tæstbåks"
if($search_for == $mailbox)
print "Yeah!";
else
print "Noo!";
我不知道为什么这两个字符串不匹配,这是我的问题。
【问题讨论】:
-
打印两者的
bin2hex()。还有,你为什么用utf8_encode? -
我正在使用
utf8_encode()将其格式化以供查看。尝试了不同编码的 dosins,这是唯一以正确格式返回邮箱的方法。关于bin2hex()函数,两者的返回值如下: IMAP Mailbox = string(24) "5400c3a673746200c3a56b73" Serach_for = string(20) "54c3a6737462c3a56b73" 所以它们仍然不匹配 -
但它只是从 ISO-8859-1 转换为 UTF-8。如果您的输入不是 ISO-8859-1,那么它将失败,如您所见。
-
是的,但至少你可以看到为什么它们不匹配,第一个有 2 个
NULs -
我明白你的意思,但我如何让它们匹配?