我有一个字符串,我从我的数据库中抓取,其中包含城镇和邮政编码信息。我想从中提取zipcodes(总是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>
请注意,字符串可以包含不同数量的城镇,拉链码,因此解决方案必须足够灵活,以适应这种情况。
答案 0 :(得分:2)
试试这个:
<?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>';
?>
上面的代码会删除除数字和逗号之外的所有内容,然后使用逗号将其展开,这将提供您需要的zipcodes。然后循环遍历zipcodes数组并创建select。
<强> [增订] 强>
它看起来有点乱,但您可以使用以下代码获得带有zipcodes的城镇名称:
<?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>';
?>