PHP使用explode循环处理数据库内容 拆分列出IP地址实现问题
实现方案
你存储在数据库里的内容是PHP序列化后的标准数组结构,直接使用PHP内置的unserialize函数反序列化即可拿到完整的IP列表,不需要自行编写字符串拆分逻辑,稳定性更高。
注意事项
原查询SQL中的option是MySQL保留关键字,需要用反引号包裹避免语法报错。
正确代码
// 数据库查询,注意保留字加反引号 $set = mysqli_query($con, "SELECT * FROM simple_stats_options where `option` = 'ignored_ips'"); $value = mysqli_fetch_array($set, MYSQLI_ASSOC); $metin = $value["value"]; // 反序列化,加错误抑制避免序列化内容损坏时报错 $ipList = @unserialize($metin); // 校验反序列化结果是否为数组,遍历输出 if (is_array($ipList)) { foreach ($ipList as $ip) { echo htmlspecialchars($ip) . "<br>"; } }
代码优势
- 完全适配序列化字符串的结构,不受IP长度、存储IP数量变化的影响,不会出现原写法多输出空行、漏取IP的问题
- 逻辑简单易维护,不需要自定义字符串拆分函数
- 增加了结果校验逻辑,避免异常内容导致页面报错
- 输出时加了
htmlspecialchars过滤,避免XSS安全风险
内容的提问来源于stack exchange,提问作者Furkan Ünlü
相关产品推荐
相关产品推荐

