【发布时间】:2013-11-02 19:55:21
【问题描述】:
我正在尝试创建一个简单的邮政编码表单,用户可以在其中输入邮政编码,如果邮政编码存在,用户将被重定向到一个链接。
所以,我有这个 html 表单:
<form method="get" action="index.php">
<input type="text" class="form-control input-lg" name="postcode" id="postcode" placeholder="Postcode">
<span class="input-group-btn">
<input class="btn btn-default btn-lg find" name="did_submit" id="submithome" type="submit" value="Find My Matchmaker" class="searchbutton">
</span>
</form>
还有 PHP 脚本:
<?php
if(isset($_GET['postcode'])){
$valid_prefixes = array(
2 => array('NH', 'AQ'),
3 => array('NZ2', 'GT5'),
4 => array('NG89', 'NG76')
);
foreach($valid_prefixes as $length => $prefixes) {
if (in_array(substr($_GET['postcode'], 0, $length), $prefixes)) {
header("Location: http://www.google.com/");
} else {
echo "<script> $('#myModal').modal('show') </script>";
}
exit;
}}
?>
所以,如果输入的邮政编码是 CV 或 NG,脚本会将用户重定向到 google,如果不是,则会启动一个模式。
现在是问题。显然,用户将输入 CV12DB(完整邮政编码),他们将获得模态,就好像邮政编码不存在一样。 我试图用 PHP 脚本做的是搜索用户输入的内容,如果他的邮政编码包含 CV 或 NG 或 SH,将他重定向到谷歌。
我尝试过使用“preg_match”或使用键而不是数组,但没有运气.. 我似乎无法弄清楚如何使它工作。
更新 替换代码后,由于某种原因,它只识别两个字母的数组。 例如,如果输入了 NG76PL,它不会识别它,所以它会转到“else”
【问题讨论】:
-
您更正的代码(实际上是基于 Peter van der Wal 的回答,而不是您的原始问题)的
exit;放置不正确,这意味着它将在第一个循环后退出 PHP。跨度> -
非常感谢,现在可以使用了。我真的很感激
标签: php search match partial postal-code