2011-06-03 18 views
5

मैं एक स्ट्रिंग है कि UUID v4पीएचपी preg_match UUID v4

$uuid = 'http://domain.com/images/123/b85066fc-248f-4ea9-b13d-0858dbf4efc1_small.jpg'; 

मैं preg_match() का उपयोग कर ऊपर से b85066fc-248f-4ea9-b13d-0858dbf4efc1 मूल्य कैसे प्राप्त होगा मिल गया है? UUID v4 पर
और जानकारी भी मिल सकते हैं here

+0

यकीन नहीं के लिए इस सरल पैटर्न की कोशिश लेकिन कोशिश कर सकते हैं "^ (\ {{0,1} ([0-9a-एफए एफ]) {8} - ([0 -9a-एफए एफ]) {4} - ([0-9a-एफए एफ]) {4} - ([0-9a-एफए एफ]) {4} - ([0-9a-fa- एफ]) {12} \} {0,1}) $ " – Rufinus

+0

फिर, रूफिनस, यह गलत है, http://en.wikipedia.org/wiki/Universally_unique_identifier#Version_4_.28random.29 – Artefact2

उत्तर

11
$uuid = 'http://domain.com/images/123/b85066fc-248f-4ea9-b13d-0858dbf4efc1_small.jpg'; 
preg_match('!/images/\d+/([a-z0-9\-]*)_!i', $uuid, $m); 

और

preg_match('/[a-f0-9]{8}\-[a-f0-9]{4}\-4[a-f0-9]{3}\-(8|9|a|b)[a-f0-9]{3‌​}\-[a-f0-9]{12}/', $uuid, $m); 

भी काम करता है। here से लिया गया, लेकिन मुझे नहीं पता कि हम उस पर भरोसा कर सकते हैं या नहीं।

+0

नहीं, यह regex waay भी अनुमोदित है। – Artefact2

+0

प्रश्न यह है कि 'यूयूआईडी' को इस तरह से लिंक से कैसे प्राप्त करें, लेकिन कहीं से भी नहीं, उदा। पाठ से नहीं। यूयूआईडी परिभाषा [यहां] है (http://en.wikipedia.org/wiki/Uuid#Definition), तो मुझे लगता है कि मेरा दूसरा समाधान, वास्तव में चोरी किया गया है, इस उद्देश्य के लिए सही काम करेगा। – Nemoden

+12

एक और सख्त रेगेक्स '/ [ए-एफ 0-9] {8} \ - [ए-एफ 0-9] {4} \ - 4 [ए-एफ 0-9] {3} \ - (8 | 9 | ए | बी) [ए-एफ 0-9] {3} \ - [ए-एफ 0-9] {12}/' –

5

आप UUIDs

preg_match('/\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/',$uuid,$matches); 
संबंधित मुद्दे