У меня есть база данных mssql, в которой моими первичными ключами являются GUID. Я работаю над веб-интерфейсом для вставки некоторых данных. Мне нужен GUID, созданный php. Я использую функцию com_create_guid()
. Поэтому, прежде чем пытаться вставить, я хочу убедиться, что мои параметры действительны. Я не могу найти способ проверить, является ли строка (com_create_guid()
) строкой) является допустимым идентификатором GUID.php - проверка действительного guid
20
A
ответ
27
Учитывая GUID определяется как что-то вроде этого: «A98C5A1E-A742-4808-96FA-6F409E799937» (от того, что говорит страница википедии)
Я полагаю, используя регулярные выражения, как этот будет делать:
$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 символов (буквы и цифры)
- 4 символов
- 4 символа
- 4 символов
- 12 символов
Каждый набор символов отделены друг от друга '-
'
Учитывая вы используете com_create_guid
, то regex проверить для optionnals }
и {
arround the guid, что означает, что это отобразит «ok» тоже:
$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
Существует несколько правил, которые должны применяться к шаблону UUID/GUID.
- Единственные допустимые буквы: a, b, c, d, e и f.
- 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");
- / начало выражения
- ^ начало строки
- (\ {)? опционально открывающей скобки {
- [аф \ д] {8} 8 шестнадцатеричных символов hhhhhhhh
- (- [аф \ д] {4}) 4 шестнадцатеричных символов протекала с помощью тире -hhhh
- {4} повторяющиеся предыдущий шаблон 4 раза
- [аф \ д] {8} 8 шестнадцатеричных символов hhhhhhhh
- (? (1) \}), если первый шаблон присутствовал {, затем матч закрытия Тег}
- $ конец строки
- / близко экспрессии
- я игнорировать случай чувствительности
Смежные вопросы
- 1. Проверка действительного ввода
- 2. Проверка действительного состояния
- 3. Проверка действительного ввода C++
- 4. Проверка действительного URL
- 5. Проверка действительного OTP с использованием переменной сеанса
- 6. проверка PHP для действительного параметра, передаваемого через URL в XSLT
- 7. Проверка действительного номера мобильного телефона в android
- 8. Аннотация Обработка Инструмент <- проверка действительного аннотацию
- 9. регулярное выражение проверка действительного имени хоста
- 10. Проверка ввода для действительного двойного или int
- 11. Утверждение SystemVerilog для действительного (запроса) - проверка проверки?
- 12. Проверка действительного ввода при использовании fscanf
- 13. Проверка действительного почтового адреса с помощью exec
- 14. Анализировать строка действительного объекта PHP
- 15. Проверка значения Guid в столбце nvarchar
- 16. Проверка действительного адреса электронной или электронной почты компании или университета
- 17. Должен ли я использовать Guid и Guid.Empty или nullable Guid?
- 18. Работа с GUID-типом: PHP
- 19. определение действительного документа CSS с помощью PHP?
- 20. PHP массив для получения одного действительного XML
- 21. Проверка подлинности API Trello, не дающая действительного токена пользователя
- 22. Проверка действительного объекта делегата перед отправкой ему сообщения
- 23. Проверка подлинности на C++ для действительного IP-адреса или IP
- 24. WinVerifyTrust возвращает CERT_E_UNTRUSTEDROOT для действительного (загружается) драйвер
- 25. Инициализация const GUID * (GUID pointer)
- 26. GUID, но не действительно GUID
- 27. Почему GUID GUID отображает разные части GUID с различной капитализацией?
- 28. кодирование и декодирование двоичного guid в PHP
- 29. Обратный код. Guid в строку в PHP
- 30. PHP: Как сгенерировать GUID как char 22?
Регулярное выражение может быть упрощено: [А-Z0-9] {8 } - (?: [A-Z0-9] {4} -) {3} [A-Z0-9] {12} –
его можно сделать короче, чем я предложил, действительно :-) Но я думаю, d по-прежнему идет с «длинной» версией, которая «проще/быстрее», чтобы понять, когда вы должны ее прочитать - это не будет nge много, но столько, сколько регулярное выражение - мощный инструмент, их часто трудно понять для тех, кто их не знает ... –
Не являются ли GUID шестнадцатеричными? Итак, почему матч на A-Z вместо A-F? Или я чего-то не хватает? – kander