मैं निम्नलिखित स्ट्रिंगरेगेक्स: "@" प्रतीक से पहले ईमेल कैसे पट्टी करें?
First Last <[email protected]>
है मैं regex & PHP का उपयोग ईमेल स्ट्रिंग से
"first.last"
निकालने के लिए चाहते हैं। इसके बारे में कैसे जाना है?
अग्रिम धन्यवाद!
मैं निम्नलिखित स्ट्रिंगरेगेक्स: "@" प्रतीक से पहले ईमेल कैसे पट्टी करें?
First Last <[email protected]>
है मैं regex & PHP का उपयोग ईमेल स्ट्रिंग से
"first.last"
निकालने के लिए चाहते हैं। इसके बारे में कैसे जाना है?
अग्रिम धन्यवाद!
मैं जानता हूँ कि इस सवाल का जवाब पहले से ही स्वीकार कर लिया गया है, लेकिन इस के प्रारूप में किसी भी मान्य ईमेल पता पर काम करेंगे: Name <[email protected]>
// Yes this is a valid email address
$email = 'joey <"[email protected]"@example.com>';
echo substr($email, strpos($email,"<")+1, strrpos($email, "@")-strpos($email,"<")-1);
// prints: "[email protected]"
अन्य पोस्ट समाधान के अधिकांश वैध के एक नंबर पर असफल हो जायेगी ईमेल पता।
क्या आप इसके बजाय एक स्प्लिट फ़ंक्शन का उपयोग नहीं कर सकते? मैं PHP का उपयोग नहीं करता लेकिन ऐसा लगता है कि यह उपलब्ध होने पर यह बहुत आसान होगा।
हैं कि सटीक प्रारूप आप मिल जाएगा, तो regex के खिलाफ मिलान है
/<([^@<>]+)@([^@<>]+)>/
आप जैसे दे देंगे कब्जा समूह 1 में first.last
और email.com
कैप्चर समूह 2.
ध्यान दें कि यह एकाधिक पते वाले ईमेल पतों पर चोक करता है। मुझे संदेह है कि यह उपयोगकर्ताओं के विशाल बहुमत के लिए एक समस्या है - और इस मामले में, एक समाधान जो 99.9% काम करता है, वह पिछले 0.1% सही तरीके से काम करने में शामिल प्रयासों के 0.1% से कम लेता है। –
/थोड़ा/अधिक काम के साथ, आप स्ट्रिंग में अंतिम @ ढूंढ सकते हैं यह जानकर कि आरएफसी के अनुसार, नाम उस अंतिम @ से पहले का हिस्सा है। – Erik
$str ="First Last <[email protected]>";
$s = explode("@",$str);
$t = explode("<",$s[0]);
print end($t);
घोस्टडॉग, मुझे यह समाधान भी पसंद है, लेकिन उचित होने के लिए मेरे प्रश्न ने रेगेक्स के लिए कहा। लेकिन फिर भी आपका समाधान बहुत अच्छा काम करता है, आपकी प्रतिक्रिया के लिए धन्यवाद! – st4ck0v3rfl0w
बीटीडब्ल्यू, प्रिंट एंड() क्या करता है? – st4ck0v3rfl0w
पर्याप्त मेला। यह तुम्हारी पसंद है। मैंने आपके विशेष स्ट्रिंग नमूने के लिए बस एक सरल विकल्प प्रस्तुत किया है। अंत ($ टी) सरणी का अंतिम तत्व है। अधिक – ghostdog74
regexp उपयोग करने के लिए कोई ज़रूरत नहीं है; कुछ सरल स्ट्रिंग फ़ंक्शंस का उपयोग करने के लिए और अधिक कुशल।
$string = 'First Last <[email protected]>';
$name = trim(substr($string, 0, strpos($string, '<')));
के लिए PHP दस्तावेज़ों की जांच करें, इसके अलावा आप अपने परिणाम के रूप में "फर्स्ट लास्ट" प्राप्त कर रहे हैं, न कि "first.last" – Erik
यह एक बहुत (यह जांच करना कि ईमेल वैध है के बाद) आसान है:
$email = '[email protected]'; $split = explode('@',$email); $name = $split[0]; echo "$name"; // would echo "my.name"
वैधता की जांच करने के लिए, आप ऐसा कर सकता है:
function isEmail($email) { return (preg_match('/[\w\.\-][email protected][\w\.\-]+\.\[w\.]/', $email)); } if (isEmail($email)) { ... }
First Last <[email protected]>
से बाहर निकालने के लिए ईमेल के रूप में ,
function returnEmail($contact) { preg_match('\b[\w\.\-][email protected][\w\.\-]+\.\[w\.]\b', $contact, $matches); return $matches[0]; }
उत्तर देखने में, आप यह ध्यान रखना चाहेंगे कि "e \ @w" @ example.com' तकनीकी रूप से एक मान्य ईमेल पता है। – Erik
बस एहसास हुआ कि केवल ईमेल पते की तुलना में स्ट्रिंग के लिए और भी कुछ था। –
आपको ['s ($ str) -> पहले से पहले ('@')'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str.php#L399) मिल सकता है सहायक, जैसा कि [इस स्टैंडअलोन लाइब्रेरी] में पाया गया है (https://github.com/delight-im/PHP-Str)। – caw