Bu e-posta gömülü ek adını ayıklamak nasıl?

3 Cevap php

Benim regex beceri ... kötü. Bu e-posta vücuda sahip.

Hello World

[cid:image002.png@01C9DEDD.67C237D0]

Hello World

[cid:image002.png@01C9DEDD.67C237D0] [cid:image002.png@01C9DEDD.67C237D0]

Hello World

Ve ne gerek dosya bir dizidir.

preg_match_all("/\[cid:(.*)\@/", $string, $matches);

echo "<pre>";
    print_r($matches);
echo "</pre>";

Ve ben ilk dosya cezası olsun. Ama 2. ve 3..

[0] => image002.png
[1] => image002.png@01C9DEDD.67C237D0] [cid:image002.png

Bir e-posta vücutta herhangi bir gömülü dosya için çalışır böylece nasıl bu regex değiştirebilirim?

3 Cevap

Ben sadece bu ifadeyi değiştirebilirsiniz düşünüyorum:

"/\[cid:(.*?)\@/"

Maç olmayan açgözlü yapmak.

Burada ifadeleri sınamak için kullanabileceğiniz araçlar bir çift vardır:

Deneyin:

preg_match_all("/\[cid:([^@]*)/", $string, $matches);

EDIT: Orijinal Mesaj bir hata vardı - özür dilemek! Ben yanlış bir şekilde kısa devre Açgözlülüğünü çalışıyordu.

Eğer bütün e-posta (başlıkları ve tüm) varsa e-posta başlıklarını gelen dosya adlarını ayıklanması yerine beden e-posta yazılımı geçti zinciri büyük ölçüde bağımlı olduğu (biçim tarafından daha tutarlı sonuçlar elde unutmayın Seni ulaşmadan aracılığıyla).

Bu nasıl görmek için MIME, çok parçalı mesajlar ve MIME başlıklarında kadar okuyun: http://en.wikipedia.org/wiki/Multipart_message#MIME_headers