去掉  来自imap邮件摘录的char

时间:2011-06-09 23:32:49

标签: php html gmail imap

我正在尝试从谷歌获取imap的邮件,我正在使用PHP IMAP库中的imap()函数,我想在我的邮件内容上使用preg_match()调用,但我有一个奇怪的问题,我有好奇的断线改变正常的preg_match()。

更多细节: 我的标记中有这样的东西:

<TABLE CELLPADDING=5 RULES=GROUPS FRAME=BOX>

<THEAD>
<TR> <TH>Résumé points de classement</TH>       <TH>Extérieur</TH>            <TH>Domicile</TH> </TR>
</THEAD>

<TBODY>
<TR> <TD>Équipe</TD>                      <TD>Milan</TD>         <TD>Arsenal</TD> </TR>

<TR> <TD>Performance du match</TD>         <TD>0</TD>  <TD>19</TD> </TR>
<TR> <TD>Étoiles équipe</TD>         <TD>0</TD>   <TD>0</TD> </TR>
<TR> <TD>Points totaux</TD>              <TD>3195</TD>       <TD>3273</TD> </TR>

<TR> <TD>Niveau actuel</TD>       <TD>22</TD>   <TD>22</TD> </TR>
<TR> <TD>Points pour le prochain niveau</TD> <TD>5</TD>    <TD>127</TD> </TR>
</TBODY>

</TABLE>

我正在运行此代码来提取正文,例如:

<?php
// $message is the previous markup.
$str = substr($message, 321, 10);
var_dump($str);
$str = preg_replace("/&#10;/i","",$str);
var_dump($str);
?>

此代码的输出为:

<pre class='xdebug-var-dump' dir='ltr'><small>string</small> <font color='#cc0000'>'
&#10;
&#10;&amp;lt;TABLE'</font> <i>(length=13)</i>
</pre>
<pre class='xdebug-var-dump' dir='ltr'><small>string</small> <font color='#cc0000'>'
&#10;
&#10;&amp;lt;TABLE'</font> <i>(length=13)</i>
</pre>

提取的值是一个空数组...经过进一步调查后,我通过源字符串的var_dump()发现有一个  在每一行的末尾。 我不清楚这个html字符代码是什么以及如何删除它。

如果你能引起我的兴趣,我会感激不尽;)

度过美好的一天!

编辑: 使用str_replace()它可以工作!  实际上是\ n断线。所以魔术技巧是:

$overview = imap_body($inbox,$email_number,0);
$message = utf8_decode(quoted_printable_decode($overview));
$message = str_replace("\n", "", $message);

1 个答案:

答案 0 :(得分:1)

首先,我假设你已经运行了imap_mime_header_decode,你就得到了结果。

假设您使用的是UTF8字符集,而不是ISO-8859-1或ISO-8859-15字符集,您可以尝试

utf8_encode($string);

我希望这会有所帮助。

EDIT 哎呀...删除或替换你可以使用的字符

preg_replace('/&#10/','<alt>',$string);

只需将您的替代角色放在哪里。您可以通过

替换它
preg_replace('/&#10/','',$string);

您也可以通过preg_replace运行数组,如

$string = $myFile;
$search = array('/&#10/','/sec/');
$replace = array('','<alt>');
preg_replace($search,$replace,$string);

This may also be relevant to you.

我希望这会有所帮助