php - 检查有效的 guid
我有一个mssql数据库,其中的主键是GUID。我正在开发一个用于插入一些数据的Web界面。我需要一个由 php 生成的 GUID。我正在使用函数。因此,在尝试插入之前,我想确保我的参数有效。我找不到检查字符串(返回字符串)是否是有效GUID的方法。com_create_guid()
com_create_guid()
我有一个mssql数据库,其中的主键是GUID。我正在开发一个用于插入一些数据的Web界面。我需要一个由 php 生成的 GUID。我正在使用函数。因此,在尝试插入之前,我想确保我的参数有效。我找不到检查字符串(返回字符串)是否是有效GUID的方法。com_create_guid()
com_create_guid()
应该对 UUID/GUID 模式施加一些规则。
简化的模式
表达:
var_dump(
preg_match("/^(\{)?[a-f\d]{8}(-[a-f\d]{4}){4}[a-f\d]{8}(?(1)\})$/i", $guid)
? "ok", "not ok");
译本:
考虑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');
}
它将匹配
每组字符由 ' 分隔-
'
考虑到您正在使用com_create_guid
,正则表达式会检查选项并绕过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');
}