मेरे पास एक mssql डेटाबेस है जिसमें मेरी प्राथमिक कुंजी GUID हैं। मैं कुछ डेटा डालने के लिए एक वेब इंटरफ़ेस पर काम कर रहा हूं। मुझे PHP द्वारा जेनरेट की गई एक GUID की आवश्यकता है। मैं com_create_guid()
फ़ंक्शन का उपयोग कर रहा हूं। तो, सम्मिलित करने का प्रयास करने से पहले मैं यह सुनिश्चित करना चाहता हूं कि मेरे पैरामीटर मान्य हैं। मुझे यह जांचने का कोई तरीका नहीं मिल रहा है कि कोई स्ट्रिंग (com_create_guid()
रिटर्न स्ट्रिंग) मान्य GUID है या नहीं।PHP - वैध guid के लिए जाँच करें
20
A
उत्तर
27
एक GUID ध्यान में रखते हुए कुछ इस तरह के रूप में परिभाषित किया गया है: "A98C5A1E-A742-4808-96FA-6F409E799937" (से क्या विकिपीडिया पृष्ठ कहते हैं)
मैं इस एक करना होगा की तरह एक regex का उपयोग कर मान लें कि:
$guid = 'A98C5A1E-A742-4808-96FA-6F409E799937';
if (preg_match('/^\{?[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}\}?$/', $guid)) {
var_dump('ok');
} else {
var_dump('not ok');
}
यह
- 8 वर्ण (अक्षर और संख्या दोनों) 012,351,641 के लिए मिलान कर देंगे
- 4 अक्षर
- 4 अक्षर
- 4 अक्षर
- 12 अक्षर
पात्रों में से प्रत्येक सेट आप com_create_guid
उपयोग कर रहे हैं ध्यान में रखते हुए एक '-
'
के द्वारा अलग किया जा रहा है guid के आस-पास 0nऔर {
के लिए regex चेक, जिसका अर्थ है कि यह 'ठीक' भी प्रदर्शित करेगा:
$guid = '{A98C5A1E-A742-4808-96FA-6F409E799937}';
if (preg_match('/^\{?[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}\}?$/', $guid)) {
var_dump('ok');
} else {
var_dump('not ok');
}
36
कुछ नियम हैं जो यूयूआईडी/GUID पैटर्न पर लगाए जाने चाहिए।
- केवल वैध अक्षरों में ए, बी, सी, डी, ई, और एफ हैं।
- 0-9 को अंकों के पैटर्न के साथ प्रतिस्थापित किया जा सकता है \ d
- GUID अक्सर केस असंवेदनशील होते हैं।
- आपके पास या तो {दोनों ब्रैकेट} हैं, या कोई भी नहीं।
सरलीकृत पैटर्न
- hhhhhhhhhhhh-hhhhhhhh-hhhhhhhhhhhh
- {hhhhhhhhhhhh-hhhhhhhh-hhhhhhhhhhhh}
अभिव्यक्ति:
var_dump(
preg_match("/^(\{)?[a-f\d]{8}(-[a-f\d]{4}){4}[a-f\d]{8}(?(1)\})$/i", $guid)
? "ok", "not ok");
अनुवाद:
- / अभिव्यक्ति
- ^ की शुरुआत स्ट्रिंग की शुरुआत
- (\ {)? वैकल्पिक प्रारंभ कोष्ठक {
- [वायुसेना \ d] {8} 8 हेक्स पात्रों hhhhhhhh
- (- [वायुसेना \ d] {4}) 4 हेक्स पात्रों पानी का छींटा द्वारा दीं -hhhh
- {4} पिछले पैटर्न दोहराया 4 बार
- [वायुसेना \ d] {8} 8 हेक्स पात्रों hhhhhhhh
- (? (1) \}) समापन अगर पहले पैटर्न उपस्थित थे {, तो मेल खाते हैं tag} स्ट्रिंग
- / पास अभिव्यक्ति
- मैं उपेक्षा मामले संवेदनशीलता के
- $ अंत
संबंधित मुद्दे
- 1. वैध SQL कॉलम नाम के लिए जाँच करें
- 2. PHP सिंटेक्स त्रुटियों के लिए जाँच करें?
- 3. बाइनरी स्ट्रिंग लंबाई के लिए जाँच करें?
- 4. GUID
- 5. एक स्ट्रिंग में एक वैध डोमेन नाम के लिए जाँच करें?
- 6. सक्रिय इंटरनेट कनेक्शन के लिए जाँच करें
- 7. लीप वर्ष के लिए जाँच करें
- 8. प्रतीक्षा अधिसूचनाओं के लिए जाँच करें
- 9. आईपी वैधता के लिए जाँच करें
- 10. कैसे जाँच करने के लिए उपयोगकर्ता नए फेसबुक php एपीआई
- 11. GUID को सत्यापित करने के लिए एक GUID
- 12. GUID
- 13. guid कैसे परिवर्तित करें?
- 14. Nullptr और जाँच एक वैध वस्तु के लिए एक सूचक अंक
- 15. अद्वितीय छवि बनाएं (छवि के लिए GUID)
- 16. PHP में रिक्त स्थान के साथ एकमात्र वर्णमाला स्ट्रिंग के लिए वैध कैसे करें?
- 17. यह वैध PHP कोड कैसा है?
- 18. लार्वेल ऑथ सभी पृष्ठों के लिए जाँच करें
- 19. मॉकिंग सिस्टम.Web.Caching.Cache - नकली या शून्य के लिए जाँच करें?
- 20. एएसपीनेट टेक्स्ट बॉक्स में स्क्रिप्ट के लिए जाँच करें
- 21. जेसीई असीमित शक्ति क्षेत्राधिकार नीति फाइलों के लिए जाँच करें
- 22. नोडजेस - छिपी हुई फाइलों के लिए जाँच करें
- 23. नियमित अभिव्यक्ति (RegEx) के देश कोड के साथ फोन नंबर के लिए जाँच
- 24. GUID और नेमस्पेस
- 25. कैसे प्रवेश किया फोन नंबर की जाँच करें करने के लिए फोन निर्देशिका से मान्य है
- 26. निरर्थक GUID
- 27. विशेष वर्णों के लिए php
- 28. यूएसबी डिवाइस इंटरफ़ेस GUID कैसे पुनर्प्राप्त करें?
- 29. वीबीस्क्रिप्ट में GUID कैसे उत्पन्न करें?
- 30. एंड्रॉइड में GUID कैसे प्राप्त करें?
regex सरल किया जा सकता: [एक-Z0-9] {8 } - (?: [ए-जेड 0-9] {4} -) {3} [ए-जेड 0-9] {12} –
इसे मैंने जो प्रस्तावित किया उससे छोटा किया जा सकता है, वास्तव में :-) लेकिन मुझे लगता है कि मैं ' डी अभी भी "लंबे" संस्करण के साथ जाना है, जो समझने के लिए "सरल/तेज" है जब आपको इसे पढ़ना होगा - यह चा नहीं होगा बहुत अधिक है, लेकिन जितना अधिक regex एक शक्तिशाली उपकरण है, वे अक्सर उन लोगों के लिए समझना मुश्किल होता है जो उन्हें अच्छी तरह से नहीं जानते ... –
GUIDs हेक्साडेसिमल नहीं हैं? तो ए-एफ के बजाय ए-जेड पर क्यों मेल करें? या मुझसे यहां कुछ छूट रहा है? – kander