我正在尝试从谷歌获取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("/ /i","",$str);
var_dump($str);
?>
此代码的输出为:
<pre class='xdebug-var-dump' dir='ltr'><small>string</small> <font color='#cc0000'>'
&lt;TABLE'</font> <i>(length=13)</i>
</pre>
<pre class='xdebug-var-dump' dir='ltr'><small>string</small> <font color='#cc0000'>'
&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);
答案 0 :(得分:1)
首先,我假设你已经运行了imap_mime_header_decode,你就得到了结果。
假设您使用的是UTF8字符集,而不是ISO-8859-1或ISO-8859-15字符集,您可以尝试
utf8_encode($string);
我希望这会有所帮助。
EDIT 哎呀...删除或替换你可以使用的字符
preg_replace('/
/','<alt>',$string);
只需将您的替代角色放在哪里。您可以通过
替换它preg_replace('/
/','',$string);
您也可以通过preg_replace运行数组,如
$string = $myFile;
$search = array('/
/','/sec/');
$replace = array('','<alt>');
preg_replace($search,$replace,$string);
This may also be relevant to you.
我希望这会有所帮助