Удалить символ из почтового извлечения imap - PullRequest
0 голосов
/ 10 июня 2011

Я пытаюсь получить почту в imap из Google, я использую функцию imap () из библиотеки PHP 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);
?>

Вывод этого кода:

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

И извлеченное значение является пустым массивом ... После дальнейшего изучения я обнаружил с помощью var_dump () моей исходной строки, что есть в конце каждой строки. Я понятия не имею, что это за код символа html и как его удалить.

Если вы можете просветить меня, я буду благодарен;)

Хорошего дня!

EDIT: С str_replace () это работает! на самом деле \ n разрыв строки. Итак, магические трюки это:

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

1 Ответ

1 голос
/ 10 июня 2011

Ну, во-первых, я предполагаю, что вы уже запустили 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);

Это также может относиться к вам.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...