我从数据库中获取了一个字符串,其中包含城镇和邮政编码信息。我想从中提取邮政编码(总是5位数),并从中构建一个select语句(使用PHP),如下所示:
$townZip = 'Boston(02108, 02112, 02116), Chelsea (02150), Revere (02151)';
<select>
<option value="">Please Select</option>
<option value="02108">02108</option>
<option value="02112">02112</option>
<option value="02116">02116</option>
<option value="02150">02150</option>
<option value="02151">02151</option>
</select>
请注意,字符串可以有不同数量的城镇和邮政编码,因此解决方案必须足够灵活才能适应这种情况。
试试这个:
<?php
$townZip = 'Boston(02108, 02112, 02116), Chelsea (02150), Revere (02151)';
$zips = explode(',',preg_replace('#[^,0-9]#', '', $townZip));
echo '<select>';
echo '<option value="">Please Select</option>';
foreach($zips as $zip){
echo '<option value="'. $zip.'">'. $zip.'</option>';
}
echo '</select>';
?>
上面的代码删除了除数字和逗号之外的所有内容,然后用逗号将其分解,从而提供所需的邮政编码。然后循环浏览邮政编码数组并创建select。
[更新]
它看起来会有点乱,但你可以通过以下代码获得带有邮政编码的城镇名称:
<?php
$townZip = 'Boston(02108, 02112, 02116), Chelsea (02150), Revere (02151)';
$zips = explode(',',preg_replace('#[^A-Za-z,0-9(]#', '', $townZip));
echo '<select>';
echo '<option value="">Please Select</option>';
$prev = '';
foreach($zips as $zip){
$temp = explode('(',$zip);
if(isset($temp[1])){
$prev = $temp[0];
$temp[0] = $temp[1];
}
echo '<option value="'. $temp[0].'">'. $prev. '-' . $temp[0].'</option>';
}
echo '</select>';
?>