2011-03-16 18 views
8

मैं एक ईमेल पाइपिंग स्क्रिप्ट पर काम कर रहा हूं जिसे केवल उत्तर सामग्री को सहेजने की आवश्यकता है, न कि मूल उद्धृत ईमेल। मैं ईमेल से आवश्यक सभी जानकारी प्राप्त करने के लिए एक माइम पार्सर क्लास (http://www.phpclasses.org/package/3169-PHP-Decode-MIME-e-mail-messages.html) का उपयोग कर रहा हूं:PHP - फ़िल्टरिंग ईमेल बॉडी, उत्तर उद्धरण

Message ID: [email protected] 
Reply ID: 201103162[email protected] 

Subject: Re: MessageX 
To: [email protected] 
From: Someone [email protected] 

Body: Hello, 
Blah Blah Blah 
-Someone 

On Wed, Mar 16, 2011 at 3:52 PM, <[email protected]> wrote: 
> Hello, 
> 
> Some other blah, blah, blah. 
> 
> Thank you, 
> Me 

शरीर अनुभाग में, मुझे मूल उद्धृत ईमेल मिल रहा है। मैं इसे कैसे फ़िल्टर कर सकता हूं? मुझे पता है कि ईमेल क्लाइंट अक्सर उद्धृत सामग्री के बगल में ">" जोड़ते हैं, लेकिन मुझे यकीन नहीं है कि यह पर्याप्त होगा या नहीं। आपकी सहायता के लिए धन्यवाद.

+2

ऐसा लगता है कि आप कुछ प्रकार के ग्राहक सहायता प्रकार को सिस्टम सिस्टम में ईमेल जवाब के प्रकार कर रहे हैं। मैंने अक्सर एक स्ट्रिंग की तरह कुछ देखा है "============= इस लाइन के ऊपर उत्तर दें ==================" मूल में "ग्राहक" को ईमेल करें जो आसानी से पाई जा सकती है और उत्तर उद्धरण के * सभी * काट देगा। यह स्पष्ट रूप से ऐसा नहीं हो सकता है जो आप करने की कोशिश कर रहे हैं, लेकिन यह आपके लिए एक वैध विकल्प भी हो सकता है। –

उत्तर

9

यह नियमित अभिव्यक्ति के साथ किया जा सकता है। आज़माएं:

$text = preg_replace('#(^\w.+:\n)?(^>.*(\n|$))+#mi', "", $text); 
+0

त्वरित उत्तर के लिए धन्यवाद, यह अब तक अच्छी तरह से काम कर रहा है। क्या ऐसे कोई मामले हैं जहां यह काम नहीं कर सकता है? – davishmcclurg

+0

निश्चित रूप से ईमेल क्लाइंट हैं जो मेल में '>' verbatim को अनुमति देते हैं या उपयोग करते हैं। या यदि आप स्रोत कोड या diffs इत्यादि ईमेल करते हैं तो इसे थोड़ा अधिक लचीला बनाने के लिए, आप regex में '{2,}' के लिए अंतिम '+' का आदान-प्रदान कर सकते हैं। इसके साथ ही यह केवल कम से कम दो '> 'लाइनों से मेल खाएगा, जो एक निश्चित संकेत है कि यह एक उद्धृत हिस्सा है। – mario

+0

इस मुद्दे के लिए कभी भी एक सही समाधान नहीं होगा। यह संभव है (हालांकि असंभव) ईमेल में सामग्री है जो उत्तर देने के लिए प्रतीत होता है। [इस स्निपेट] की लाइन 10 से 13 पर विचार करें (http://pastebin.com/ZyJvBMbn) (मैंने आपका मूल उदाहरण संशोधित किया है)। सभी संभावनाओं में, उन पंक्तियों को हटा दिया जाएगा। –

संबंधित मुद्दे