2015-07-14 4 views
5

में पहली घटना को preg_match कैसे करें मैं ईमेल बॉडी से From:address निकालने का प्रयास कर रहा हूं।एक स्ट्रिंग

$string = "From: [email protected] This is just a test.. the original message was sent From: [email protected]"; 

$regExp = "/(From:)(.*)/"; 
$outputArray = array(); 
if (preg_match($regExp, $string, $outputArray)) { 
print "$outputArray[2]"; 
} 

मैं From: .. के किसी भी सुझाव पहली घटना का ईमेल पता प्राप्त करना चाहते हैं: यहाँ क्या मैं अब तक किया है?

उत्तर

4

आपका रेगुलर एक्सप्रेशन से भी लालची है: .* मैचों किसी भी 0 या अधिक वर्ण एक नई पंक्ति के अलावा, संभव के रूप में कई। इसके अलावा, शाब्दिक मूल्यों के आस-पास कैप्चरिंग समूहों का उपयोग करने में कोई बात नहीं है, यह एक अनावश्यक ओवरहेड बनाता है।

उपयोग निम्नलिखित रेगुलर एक्सप्रेशन:

^From:\s*(\S+) 

^ सुनिश्चित करती है कि हम स्ट्रिंग की शुरुआत से खोज शुरू, From: पात्रों के अनुक्रम सचमुच, \s* मैचों वैकल्पिक रिक्त स्थान से मेल खाता है, (\S+) कब्जा 1 या अधिक गैर -विइटस्पेस प्रतीकों।

sample code देखें:

<?php 
$string = "From: [email protected] This is just a test.. the original message was sent From: [email protected]"; 

$regExp = "/^From:\s*(\S+)/"; 
$outputArray = array(); 
if (preg_match($regExp, $string, $outputArray)) { 
print_r($outputArray[1]); 
} 

मूल्य आप देख रहे हैं अंदर $outputArray[1] है।

+0

भयानक !, बहुत धन्यवाद। बहुत सराहना की – samjones39