2010-09-29 7 views
4

J'utilise la fonction imap_search() de libraray PHP IMAP pour rechercher des mails dans une boîte de réception Gmail via la chaîne sujet.La recherche IMAP par sujet échoue sur les caractères de ponctuation sur Gmail

imap_seach($mbox, 'ALL SUBJECT "<search string>"'); 

Cette recherche renvoie parfaitement bien pour les chaînes alphanumériques mais échoue quand il a des caractères spéciaux comme barre oblique, une virgule, deux-points, guillemet simple, trait d'union, et bien d'autres personnages que je ne connais même pas. Echapper à eux n'aide pas. Remplacer quelques-uns avec de l'espace aide parfois, mais pas dans tous les cas.

Existe-t-il un moyen standard pour filtrer la chaîne de recherche afin qu'elle ne commette jamais d'erreur et renvoie un résultat? J'ai essayé de tokenizing la piqûre de sujet et en enlevant tous les mots de la chaîne de recherche qui même un caractères alphanumériques. Cela fonctionne principalement mais échoue lorsque tous les mots ont un caractère non-alphanumérique (ce qui est commun pour un sujet à un ou deux mots).

+0

Existe-t-il un moyen d'encoder la chaîne de recherche en unicode, puis transmettre la chaîne de recherche. Selon la RFC 2047, ces caractères sont des caractères spéciaux especials = "("/")"/"<"/">"/"@"/","/";"/":"/" <"> /"/"/" ["/"] "/"? "/". "/" = " Je n'arrive même pas à savoir comment les échapper – Nands

+0

Mes recherches fonctionnent bien avec le symbole @, mais seulement sporadiquement - parfois les bons résultats sont trouvés, parfois non Avez-vous obtenu n'importe où avec votre problème? – Ben

+1

Je n'ai pas été capable de trouver une solution qui fonctionne dans 100% des cas – Nands

Répondre

1

Je devine que la recherche GMail va par l'idée que peuvent être utilisés comme des chaînes de recherche des mots alphanumériques entiers ..

Par conséquent, vous auriez à supprimer tous les non-caractères alphanumériques de votre chaîne de recherche, et fonctionnera ...

Questions connexes