<?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"