php正则匹配语义化
如下代码
$address = 'One Infinite Loop, Cupertino 95014';
$cityZipCodeRegex = '/^[^,\\]+[,\\\s]+(.+?)\s*(\d{5})?$/';
preg_match($cityZipCodeRegex, $address, $matches);
saveCityZipCode($matches[1], $matches[2]);
当为了获取city和zipcode,匹配得到两个结果,分别是$matches[1]
和$matches[2]
,但是这里并不能直接看出这两个结果分别代表city和zicode,这就给代码可读性带来了很大的影响。
可以使用如下的方法来解决这个问题
$address = 'One Infinite Loop, Cupertino 95014';
$cityZipCodeRegex = '/^[^,\\]+[,\\\s]+(?<city>.+?)\s*(?<zipCode>\d{5})?$/';
preg_match($cityZipCodeRegex, $address, $matches);
saveCityZipCode($matches['city'], $matches['zipCode']);
使用带有名字的子规则,那么就很明显的能看出匹配的结果分别代表什么意思。
如果您觉得本文对您有用,欢迎捐赠或留言~
- 本博客所有文章除特别声明外,均可转载和分享,转载请注明出处!
- 本文地址:https://www.leevii.com/?p=847