更新的说明
我想检查用户提供的数据中是否包含字母和数字字符。因此,如果用户输入 LP1 5NQ 或 LP15NQ 并且我有一个数据数组,并且包含在数组中的内容是这样的:
array(..., "LP1", ...)
那么脚本应该将数组与 LP1 5NQ 或 LP15NQ 匹配
所以基本上我的问题是,当我尝试检查 LP1 5NQ 或类似内容的用户输入时,我只想检查他们输入 LP1 的开始部分,但将 LP1 5NQ 存储在他们的会话中,以便以后可以访问。我已经可以存储他们的输入,我只是在检查用户输入的开头时遇到问题。
PHP:
$op_postcodes = array("DG10","DG3", ......);
function like_in_array( $sNeedle, $aHaystack) {
foreach($aHaystack as $sKey) {
if(stripos(strtoupper($sKey), strtoupper($sNeedle)) !== false) {
return true;
}
}
return false;
}
if(isset($_POST["service_checker"]) && !empty($_POST["service_checker")) {
$postcode = htmlentities(trim(strtoupper($_POST['postcode'])));
if(empty($postcode)) {
$error = "<p class='err_msg'>Your postcode is required so that we can check if our services are available in your area.</p>";
} else if(like_in_array($postcode, $op_postcodes)) {
$error = "<p class='pop_up alert success'>Your in! We supply our services to $postcode.</p>";
$_SESSION['predx_cust_pc_order'] = $postcode;
} else {
$error = "<p class='err_msg'>Sorry, we aren't supplying your area just yet.</p>";
}
}
考虑到忘记邮政编码中的空格的用户,我的其他解决方案的替代方案。
根据维基百科,邮政编码的第二部分总是三个字符长,所以你可以使用 substr 来切断最后三个字符,然后修剪以删除可能仍然存在的空格。喜欢这个:
trim(substr("LP1 5NQ", 0, -3));
我会像这样使用"爆炸"函数
explode(" ", "LP1 5NQ");
这会将字符串拆分为一个数组,其中包含邮政编码的第一部分和两个不同元素的第二部分。然后,您可以轻松访问数组的第一个元素进行检查。