|
|
|
| Здравствуйте. Помогите реализовать проверку, является ли строка UUID, то есть имеет ли она такой формат: 92c4d78c-1e79-11e2-bfdf-c86000df07f0.
Заранее спасибо | |
|
|
|
|
|
|
|
для: p.pavluxa
(25.10.2012 в 11:58)
| |
<?
$s = '92c4d78c-1e79-11e2-bfdf-c86000df07f0';
$pt = '/[\da-z]{8}-[\da-z]{4}-[\da-z]{4}-[\da-z]{4}-[\da-z]{12}/';
echo preg_match($pt, $s) ? 'Yes' : 'No';
|
| |
|
|
|
|
|
|
|
для: p.pavluxa
(25.10.2012 в 11:58)
| | Реализовать данную проверку по моему возможно только регулярными выражениями,
но для этого надо точно понимать формат UUID который вы будете проверять,
в данном вами примере UUID имеет формат -
"начало строки 8символов тире 4символа тире 4символа тире 4символа тире 12символов конец строки"
под символом в данном случае подразумевается цифра либо символ латиницы
значит пишем такое регулярное выражение - $pattern = '/^[a-z0-9]{8}\-[a-z0-9]{4}\-[a-z0-9]{4}\-[a-z0-9]{4}\-[a-z0-9]{12}$/';
и проверяем с помощью preg_match()
$str = '92c4d78c-1e79-11e2-bfdf-c86000df07f0';
$pattern = '/^[a-z0-9]{8}\-[a-z0-9]{4}\-[a-z0-9]{4}\-[a-z0-9]{4}\-[a-z0-9]{12}$/';
if(preg_match($pattern,$str)) echo 'yes';
else echo 'no';
|
но если НЕ все UUID будут имеет формат -
"начало строки 8символов тире 4символа тире 4символа тире 4символа тире 12символов конец строки"
то тогда проверка будет не корректной
если вы например добавите в конец $str еще один символ или переместите тире на одну позицию в любую сторону то проверка даст отрицательный результат так как такой UUID не будет соответствовать формату и написанному мной регулярному выражению | |
|
|
|
|
|
|
|
для: adreew
(25.10.2012 в 15:40)
| | если под UUID подразумевается Universally Unique Identifier то тогда мое регулярное выражение было неверно, его надо исправить, потому что UUID состоит из комбинаций шеснадцатеричных цифр, поэтому диапазон а-z надо заменить на a-f и тогда правильное выражение будет выглядеть так:
$pattern = '/^[a-f0-9]{8}\-[a-f0-9]{4}\-[a-f0-9]{4}\-[a-f0-9]{4}\-[a-f0-9]{12}$/';
а весь код:
<?php
$str = '92c4d78c-1e79-11e2-bfdf-c86000df07f0';
$pattern = '/^[a-f0-9]{8}\-[a-f0-9]{4}\-[a-f0-9]{4}\-[a-f0-9]{4}\-[a-f0-9]{12}$/';
if(preg_match($pattern,$str)) echo 'yes';
else echo 'no';
?>
|
| |
|
|
|