[php]rare tekens replacen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Ik heb een raar probleem. Ik lees vanaf een pop3 server èmail uit. dit doe ik met de php functie:
code:
1
imap_body($host,number)

Ik krijg dan de body terug van het mail bericht. in dat mail bericht staan rare tekens. zoals "è". ALs ik dan het resultaat van de body naar het scherm schrijf dan krijg ik voor de "è", "E9" terug. En voor de enter "=20".

Ik kan de =20 wel replacen. maar ik vraag mij af of dat de oplossing is. Ik ken deze manier vvan tekens neit. Ik heb geprobeert de "=20" te replacen voor "<p>" en dat naar het scherm schrijven. Maar voor de "è" lukt het me niet.

Kent iemand het probleem want wat ik eigenlijk wil is php rare tekens laten parsen

Jochemmol


Acties:
  • 0 Henk 'm!

  • foske
  • Registratie: Juli 2001
  • Laatst online: 08:20
ik denk dat je urldecode() methode moet hebben.Maar het zou ook een andere codering kunnen zijn, maar ik zou bij deze beginnen.

Acties:
  • 0 Henk 'm!

Verwijderd

http://www.php.net/quoted_printable_decode

Zie ook de comments.

Je kunt waarschijnlijk ook imap_qprint gebruiken omdat je de imap extensie geinstalleerd hebt.

[ Voor 43% gewijzigd door Verwijderd op 30-07-2005 21:49 ]


Acties:
  • 0 Henk 'm!

  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Bedankt. Met de functie´s imap_qprint en quoted_printable_decode lukt het allebei. Alleen de =20 (enter) werkt niet. Maar als ik eerst een replace doe en dan de decode dan lukt het.

Bedankt

Jochemmol


Acties:
  • 0 Henk 'm!

Verwijderd

Ik denk dat je nadat je de imap_qprint functie op die string hebt losgelaten, je ook nog even nl2br moet doen als je de output in een HTML bestand een klein beetje fatsoenlijk uit wil laten zien. Een return character in HTML code staat gelijk aan een spatie in het gerenderde resultaat. Daarom zou je de newlines moeten vervangen door <br />

Acties:
  • 0 Henk 'm!

  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Ik kon alle mailtjes goed uitlezen. Maar nu onstaat het probleem. Ik heb voor een test met outlook een mailtje verstuurd. Als ik die dan uitlees dan zie ik niks op het scherm. Als ik de code uitzet en gewoon echo:
PHP:
1
2
3
4
//dus dit ipv
echo quoted_printable_decode ($bericht);
//dit
echo imap_qprint($bericht);

Als ik dan kijk wat voor bericht het is dan zie ik dit als mail.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
This is a multi-part message in MIME format.

------=_NextPart_000_0001_01C595D7.221B5110
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: 7bit

test mail.

------=_NextPart_000_0001_01C595D7.221B5110
Content-Type: text/html;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Hoe komt het dat met de functie "quoted_printable_decode" wel het mailtje zie en met de functie "imap_qprint" niet.
Ik denk dat het nu een multi-part message in MIME format is. Maar hoe kan ik dat beter uitlezen. want ik wil niet zien dat het een multi-part message in MIME format is |:( ik wil alleen de tekst zien. en hoe komt het dat het opeens een ander type mail is? 8)7

Jochemmol


Acties:
  • 0 Henk 'm!

Verwijderd

De body bevat zelf ook weer headers en bodies van de "parts". Je moet in de headers van de e-mail opzoeken wat wordt gebruikt als de separator, en die gebruiken om de body mee op te splitsen in losse delen. Elk van die delen kun je weer behandelen als een apart bericht.

Je zou dan op basis van de content-type van elk bericht kunnen bepalen welke je wilt laten zien.

Acties:
  • 0 Henk 'm!

  • Jochemmol
  • Registratie: Augustus 2004
  • Laatst online: 07-05-2014
Oke dat klinkt logisch. Maar ik krijg een string terug. Hoe kom ik erechter wat de laatste karakter is want daarop moet ik het bericht gaan splitten.

Ik kan ook de functie "imap_bodystruct" gebruikeken. Alleen ik krijg dan 2 stukker terug. Maar ik krijg neit echt terug wat het format is.

want als ik alle stukken echo dan zijn ze leeg 8)7

[ Voor 11% gewijzigd door Jochemmol op 31-07-2005 20:42 ]

Jochemmol


Acties:
  • 0 Henk 'm!

  • DJ Buzzz
  • Registratie: December 2000
  • Laatst online: 19-09 08:24
Ik zou als ik jou was eens kijken naar de functie imap_fetchstructure en dan zoeken naar delen die een content-type hebben dat weer te geven is (text/plain in het simpelste geval).

Dan kijk je ook naar de encoding van dat deel en bepaal je aan de hand daarvan of je nog functies zoals quoted_printable moet gebruiken. Een eigen parser hiervoor schrijven lijkt me een beetje loos als je al imap_fetchstructure hebt en daarna imap_fetchbody gebruikt om het specifieke deel op te vragen.
Pagina: 1