我有以下(部分)代码,它将检查带有数组的表单中输入的值(如优惠券代码检查)。如果表单中输入的值是数组中的一个,则人们可以在表单中输入代码。
if(!in_array($posted_value, array('DA001','DA002'))){ //
所以我有一个包含80.000代码的csv文件。无论如何(在线转换器或其他东西)我可以把所有代码放在'之间。 '在a,所以csv现在是:
DA001
DA002
DA003
IE302
我想将其转换为'DA001´, 'DA002', 'DA003', 'IE302'
---这是我的完整代码,其中包含您的代码: 我将codes.csv与.php文件放在同一目录中 这是我现在的代码,但由于我有500个服务器错误,所以出了问题。
add_filter('frm_validate_field_entry', 'my_custom_validation', 10, 3);
function my_custom_validation($errors, $posted_field, $posted_value){
if($posted_field->id == 9){ //change 25 to the ID of the field to validate
$codes = file("codes.csv", FILE_IGNORE_NEW_LINES);
if (!in_array($posted_value, static $codes = array_flip(...);))){ //change 001 and 002 to your allowed values
//if it doesn't match up, add an error:
$errors['field'. $posted_field->id] = 'Deze code is al een keer gebruikt of bestaat niet.';
}
}
return $errors;
}
答案 0 :(得分:1)
使用file()
函数将文件读入数组。每一行都将成为一个数组元素。
$codes = file("codes.csv", FILE_IGNORE_NEW_LINES);
if (!in_array($posted_value, $codes)) {
...
}
但是,使用80K元素搜索数组会很慢。如果您在同一个脚本中重复执行此操作,最好通过将它们转换为关联数组来对它们进行哈希处理:
$codes = array_flip(file("codes.csv", FILE_IGNORE_NEW_LINES));
if (!isset($codes[$posted_value])) {
...
}
完整代码应为:
add_filter('frm_validate_field_entry', 'my_custom_validation', 10, 3);
function my_custom_validation($errors, $posted_field, $posted_value){
if($posted_field->id == 9){ //change 25 to the ID of the field to validate
static $codes;
if (!$codes) {
$codes = array_flip(file("codes.csv", FILE_IGNORE_NEW_LINES));
}
if (!isset($codes[$posted_value])){ //change 001 and 002 to your allowed values
//if it doesn't match up, add an error:
$errors['field'. $posted_field->id] = 'Deze code is al een keer gebruikt of bestaat niet.';
}
}
return $errors;
}