作为程序员一定要保持良好的睡眠,才能好编程

php正则中使用可以解释的变量

发布时间:2019-08-17


<?php

//  使用可以解释的变量
// 不好的:

// $address = 'One Infinite Loop, Cupertino 95014';
// $cityZipCodeRegex = '/^[^,\\]+[,\\\s]+(.+?)\s*(\d{5})?$/';
// preg_match($cityZipCodeRegex, $address, $matches);

// saveCityZipCode($matches[1], $matches[2]);
// 好一点的:

// 这个好了一点,但是我们还是非常依赖正则

// $address = 'One Infinite Loop, Cupertino 95014';
// $cityZipCodeRegex = '/^[^,\\]+[,\\\s]+(.+?)\s*(\d{5})?$/';
// preg_match($cityZipCodeRegex, $address, $matches);

// list(, $city, $zipCode) = $matches;
// saveCityZipCode($city, $zipCode);
// 好的:
// 通过使用命名子模式我们不必再依赖正则

$address = 'One Infinite Loop, Cupertino 95014';
$cityZipCodeRegex = '/^[^,\\]+[,\\\s]+(?<city>.+?)\s*(?<zipCode>\d{5})?$/';
preg_match($cityZipCodeRegex, $address, $matches);

var_dump($matches['city'], $matches['zipCode']);

/**
E:\phpStudy\WWW\test\qc.php:28:
string(11) ", Cupertino"
E:\phpStudy\WWW\test\qc.php:28:
string(5) "95014"