2012-01-02 12 views
15

मैं जैसे php पतों में रेगुलर एक्सप्रेशन के उपयोग से मेल खानी चाहिए:,preg_match php सड़क का पता

  • 144 सड़क, शहर, राज्य पिन/डाक कोड
  • 144 सड़क उपयुक्त # 1, शहर, राज्य ज़िप/डाक कोड
  • 144 सड़क उपयुक्त # 1, शहर राज्य पिन/डाक कोड

पिन/डाक कोड पत्र और/या संख्या में शामिल कर सकते हैं।

यहाँ मैं क्या करने की कोशिश की है:

print_r(preg_match('/^([0-9]+)\s([a-z]+)\s([a-z]+)\s([a-z]+)\s([a-z0-9]+)$/i', $t, $m)); 
print_r($m); 

यह आउटपुट:

Array 
(
    [0] => 123 asd asd asd 123 
    [1] => 123 
    [2] => street 
    [3] => city 
    [4] => state 
    [5] => zip 
) 

इस रिक्त स्थान केवल का उपयोग कर काम करता है। जब मेरे पास अल्पविराम होता है तो यह काम नहीं करता है और इसके परिणामस्वरूप खाली सरणी होती है।

कॉमा भी शामिल करने के लिए मैं क्या कर सकता हूं?

+0

यह आपके '#' के साथ काम नहीं करेगा। क्या आप उपरोक्त नमूने के अलावा, आप किस इनपुट की अपेक्षा करते हैं, इसके बारे में थोड़ा और सटीक हो सकते हैं? – fge

उत्तर

15

क्यों न केवल अल्पविराम को हटाएं और फिर अपनी नियमित अभिव्यक्ति का उपयोग क्यों करें?

इसके अलावा अल्फान्यूमेरिक ज़िप के लिए आपको a-z0-9 से अन्य वर्ण जोड़ने की आवश्यकता हो सकती है क्योंकि कनाडाई ज़िप कोड स्थान का उपयोग करते हैं।

दूसरी बात आप की जाँच करने की आवश्यकता होगी, तो एक सड़क का उस में रिक्त स्थान की तरह है:

1000 NW एक रास्ता ड्राइव

या

100 रुए डेस पेप्लियर

आपकी नियमित अभिव्यक्ति काम नहीं करेगी। शहर के लिए वही

एपीआई का उपयोग करना अच्छा है लेकिन आपको उन देशों के लिए एपीआई प्राप्त करना होगा जिन्हें आपको चाहिए। यदि आप ऐसे देश को मान्य करना चाहते हैं जो दर्दनाक हो सकते हैं।

ceejayoz का एक अच्छा जवाब है, लेकिन मुझे लगता है कि आपको क्या करना चाहिए, आपको प्राप्त होने वाले शीर्ष देशों के लिए एपीआई प्राप्त करें और फिर बाकी सब कुछ के लिए रेगेक्स का उपयोग करें।

-1

[0-9]+\s(\w)*(\W)(\s?)(\w)*(\W)(#[0-9])?(\W*)(\w)*(\W)(\s?)(\w)*(\s?)(\w)*

इस

+4

मुझे मिलता है: PHP चेतावनी: preg_match(): अज्ञात संशोधक '+' – Marty

1
/^([0-9]+)\s([a-z]+)(,\s|\s)([a-z]+)(,\s|\s)([a-z]+)(,\s|\s)([a-z0-9]+)$/i 

बस परिवर्तन की कोशिश "\ s" में "(, \ s | \ रों)" है, जो या तो एक खाली स्थान या एक अल्पविराम और एक whtiespace से मेल खाएगा। अभी भी आपके अभिव्यक्ति के साथ क्या समस्या है, इसके बगल में कई समस्याएं हैं। उदाहरण के लिए रिक्त स्थान या हाइफ़न के साथ सड़क या शहर के नामों के बारे में सोचें ...

0

अमेरिकी डाक सेवा में सामान्यीकरण API - https://www.usps.com/business/webtools.htm है।

रेगेक्स के माध्यम से ऐसा करना एक दर्दनाक, गड़बड़ प्रक्रिया होगी। कई पते सामान्य प्रारूप से चिपके रहते हैं।

+2

जो अमेरिका के लिए अच्छा होगा, कैंडा के बारे में क्या होगा? ब्रिटेन? – aki

+0

मैंने सोचा कि ओपी ने केवल यूएस-स्टाइल पते का उल्लेख किया है, लेकिन मुझे लगता है कि उन्होंने निर्दिष्ट किया है कि "ज़िप" में अक्षर हो सकते हैं, जो मुझे लगता है कि इसे ज़िप से अधिक डाक कोड बनाता है। फिर भी, यह उनके पते के एक अच्छे हिस्से के साथ अच्छी तरह से मदद कर सकता है। – ceejayoz

+0

क्षमा करें मुझे प्रश्न – aki

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