arasında bir dize içeriğini bulmak için preg_match desen

0 Cevap php

Ben e-postaların içeriğini okur ve bir veritabanında depolamak için bazı bilgi çeker bir PHP komut dosyası üzerinde çalışıyorum.

Imap_fetchbody Kullanma ($ imap_akımı, $ iletinum, 1), ben e-postanın gövdesinde almak mümkün değilim. (Özellikle e-posta, cep telefonlarından SMS olarak gönderilir) Bazı durumlarda, e-posta vücut bu gibi görünüyor:

===------=_Part_110734_170079945.1283532109852
Content-Type: text/html;charset=UTF-8;
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

<html> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
        <title>Multimedia Message</title> 
    </head> 
    <body leftmargin="0" topmargin="0"> 


                <tr height="15" style="border-top: 1px solid #0F7BBC;"> 
                    <td> 
                        SMS to email test
                    </td> 
                </tr> 


     </body> 
</html> 


------=_Part_110734_170079945.1283532109852--===

Ben e-posta "içeriği" dışarı çıkarmak istiyorum. Yani, benim planım şu:

Beden "html" etiketleri içerip içermediğini kontrol edin. Eğer değilse, ben (bir HTML e-posta değil) normal okuyabilirsiniz.

Eğer, "html" etiketleri arasına içeriği ayıklamak. Sonra, tüm diğer HTML etiketleri ortadan kaldırmak ve "içerik" sol budur.

Bu Şablon gelince Ancak, ben oldukça clueless değilim.

Ben bu çalıştı:

$pattern = '/<html[^>]*>(.*?)<\/html>/i';
preg_match($pattern, $body, $matches);
// my 'content' should be in $matches[1]

But that didn't work (probably because $body contains newlines and other whitespace). So then Ben bu çalıştı:

$pattern = '/<html[^>]*>([.\s]*?)<\/html>/i';
preg_match($pattern, $body, $matches);

Ama bu da işe yaramadı.

Peki, $ desen ben "html" etiketleri arasındaki tüm metin ayıklamak için kullanabilir miyim?

UPDATE: Ben bir çözüm tökezledi - Önce tüm boşluk şerit:

$body = preg_replace('/\s\s+/', ' ', $body);
$pattern = '/<body[^>]*>(.*?)<\/body>/';

Ben bu hızlı ya da en etkili yöntem değil, ama çalışır, ve ben şimdiye kadar var iyi olduğunu sanıyorum. Eğer varsa ben hala olsa, daha iyi bir çözüm sevinirim.

UPDATE 2: Gumbo önerileri sayesinde, onun yerine HTML regex çalışırken ben arıyordum kısmını bulmak için e-posta yapısına kazmak için biraz daha denedim. Sonunda buldum: http://docstore.mik.ua/orelly/webprog/pcook/ch17_04.htm, tam olarak ne gerekli nasıl açıklar.

0 Cevap