Reputation: 2510
I am trying to fetch a mail in imap from Google, I'm using the imap()
function from PHP IMAP library and I want to use a preg_match()
call on my mail content but I have a strange issue, I have curious break lines altering the normal preg_match()
.
More details: I have in my markup something like that:
<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>
I am running this code to extract the body for example:
<?php
// $message is the previous markup.
$str = substr($message, 321, 10);
var_dump($str);
$str = preg_replace("/ /i","",$str);
var_dump($str);
?>
The output of this code is:
<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>
And the extracted value is an empty array... After further investigation i discovered through a var_dump()
of my source string that there is a
at the end of each line.
I have no clue of what this html char code is and how to remove it.
Upvotes: 0
Views: 915
Reputation: 1888
Well the first thing is I'm assuming that you have run imap_mime_header_decode already and you have the result.
Assuming you're working in the UTF8 charset and not ISO-8859-1 or ISO-8859-15 charsets you can try
utf8_encode($string);
EDIT Whoops... to remove or replace the char you can use
preg_replace('/
/','<alt>',$string);
Just place your alternative character in where is. You can replace it with nothing by doing
preg_replace('/
/','',$string);
You can also run an array through preg_replace like
$string = $myFile;
$search = array('/
/','/sec/');
$replace = array('','<alt>');
preg_replace($search,$replace,$string);
This may also be relevant to you.
Upvotes: 1