我如何将 ip 地址值从数据库拆分为 CodeIgniter 中的数组格式
how do i split ip address value from database into the array format in CodeIgniter
我正在开发 CodeIgniter 应用程序,我想在其中将 IP 地址拆分为数组格式。实际上,我正在从数据库列中获取值,但无法根据从数据库中获取的动态值创建数组?
控制器代码
Getting Values from the database
$system = $this->Xin_model->read_enter_allow_ip_address_info(1);
$allowlist = array($system[0]->enter_allow_ip_address);
$finalipallow = nl2br($allowlist);
if(!in_array($_SERVER['REMOTE_ADDR'],$finalipallow)){
$Return['error'] = 'Login Failed';
$this->output($Return);
}
模型查询
public function read_enter_allow_ip_address_info($id) {
$condition = "setting_id =" . "'" . $id . "'";
$this->db->select('enter_allow_ip_address');
$this->db->from('xin_system_setting');
$this->db->where($condition);
$this->db->limit(1);
$query = $this->db->get();
return $query->result();
}
来自数据库列的动态值
'10.0.0.1','10.0.0.2','10.0.0.3','::1'
如何将数据库中的 IP 地址值拆分为像这样的静态数组的数组格式
$finalipallow = array(
'10.0.0.1',
'10.0.0.2',
'10.0.0.3',
'::1'
);
我有一个与 if condition
一起使用的静态数组,但我想像静态数组一样将动态值转换为数组?
现在在这里解决它
$system = $this->Xin_model->read_enter_allow_ip_address_info(1);
$allowlist = $system[0]->enter_allow_ip_address;
$finalipallow = str_getcsv($allowlist, ",", "'");
if(!in_array($_SERVER['REMOTE_ADDR'],$finalipallow)){
$Return['error'] = 'Login Failed';
$this->output($Return);
}
您可以使用 explode
来拆分字符串和 return 数组中的项目
$newArray = explode(',',$dbString);
print_r($newArray);
<-- 可以查看数据
$dbString= "'10.0.0.1','10.0.0.2','10.0.0.3','::1'";
$newArray = explode(',',$dbString);
print_r($newArray);
输出:Array ( [0] => '10.0.0.1' [1] => '10.0.0.2' [2] => '10.0.0.3' [3] => '::1' )
您需要将 '
替换为空字符串,因为我可以看到您正在将确切的 IP 与数组进行比较。你可以这样做:
$dbString= "'10.0.0.1','10.0.0.2','10.0.0.3','::1'";
$dbString= str_replace("'", "", $dbString);
$newArray = explode(',',$dbString);
print_r($newArray);
或者您可以更改
`if(!in_array($_SERVER['REMOTE_ADDR'],$newArray)`)
到
if(!in_array("'".$_SERVER['REMOTE_ADDR']."'",$newArray))
您可以使用 str_getcsv()
将其处理为 CSV 记录...
$data = "'10.0.0.1','10.0.0.2','10.0.0.3','::1'";
$finalipallow = str_getcsv($data, ",", "'");
print_r($finalipallow);
输出...
Array
(
[0] => 10.0.0.1
[1] => 10.0.0.2
[2] => 10.0.0.3
[3] => ::1
)
只需将 $data
更改为数据库中的值。使用 deimter 和可选的封闭参数允许它从数据中删除额外的引号。
我正在开发 CodeIgniter 应用程序,我想在其中将 IP 地址拆分为数组格式。实际上,我正在从数据库列中获取值,但无法根据从数据库中获取的动态值创建数组?
控制器代码
Getting Values from the database
$system = $this->Xin_model->read_enter_allow_ip_address_info(1);
$allowlist = array($system[0]->enter_allow_ip_address);
$finalipallow = nl2br($allowlist);
if(!in_array($_SERVER['REMOTE_ADDR'],$finalipallow)){
$Return['error'] = 'Login Failed';
$this->output($Return);
}
模型查询
public function read_enter_allow_ip_address_info($id) {
$condition = "setting_id =" . "'" . $id . "'";
$this->db->select('enter_allow_ip_address');
$this->db->from('xin_system_setting');
$this->db->where($condition);
$this->db->limit(1);
$query = $this->db->get();
return $query->result();
}
来自数据库列的动态值
'10.0.0.1','10.0.0.2','10.0.0.3','::1'
如何将数据库中的 IP 地址值拆分为像这样的静态数组的数组格式
$finalipallow = array(
'10.0.0.1',
'10.0.0.2',
'10.0.0.3',
'::1'
);
我有一个与 if condition
一起使用的静态数组,但我想像静态数组一样将动态值转换为数组?
现在在这里解决它
$system = $this->Xin_model->read_enter_allow_ip_address_info(1);
$allowlist = $system[0]->enter_allow_ip_address;
$finalipallow = str_getcsv($allowlist, ",", "'");
if(!in_array($_SERVER['REMOTE_ADDR'],$finalipallow)){
$Return['error'] = 'Login Failed';
$this->output($Return);
}
您可以使用 explode
来拆分字符串和 return 数组中的项目
$newArray = explode(',',$dbString);
print_r($newArray);
<-- 可以查看数据
$dbString= "'10.0.0.1','10.0.0.2','10.0.0.3','::1'";
$newArray = explode(',',$dbString);
print_r($newArray);
输出:Array ( [0] => '10.0.0.1' [1] => '10.0.0.2' [2] => '10.0.0.3' [3] => '::1' )
您需要将 '
替换为空字符串,因为我可以看到您正在将确切的 IP 与数组进行比较。你可以这样做:
$dbString= "'10.0.0.1','10.0.0.2','10.0.0.3','::1'";
$dbString= str_replace("'", "", $dbString);
$newArray = explode(',',$dbString);
print_r($newArray);
或者您可以更改
`if(!in_array($_SERVER['REMOTE_ADDR'],$newArray)`)
到
if(!in_array("'".$_SERVER['REMOTE_ADDR']."'",$newArray))
您可以使用 str_getcsv()
将其处理为 CSV 记录...
$data = "'10.0.0.1','10.0.0.2','10.0.0.3','::1'";
$finalipallow = str_getcsv($data, ",", "'");
print_r($finalipallow);
输出...
Array
(
[0] => 10.0.0.1
[1] => 10.0.0.2
[2] => 10.0.0.3
[3] => ::1
)
只需将 $data
更改为数据库中的值。使用 deimter 和可选的封闭参数允许它从数据中删除额外的引号。