You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP使用in_array比对当前URL与数据库URL数组仅首个匹配问题

问题原因
  • 分隔后的URL存在多余空白字符:从数据库取出的逗号分隔字符串如果在逗号前后包含空格、换行等不可见空白,explode后除了首个元素外其余元素都会携带多余空白,导致和实际URL匹配失败。
  • URL末尾斜杠不一致:WordPress的get_permalink()默认会给URL添加末尾斜杠,如果你数据库存储的URL没有携带末尾斜杠,也会出现匹配不上的问题。
解决方案

修改代码统一处理数组元素格式、对齐URL的末尾斜杠规则即可,修改后参考代码如下:

$url = get_permalink();
function check_links($url){
    $db_links = get_option('db_links'); 
    // 拆分后清理每个元素的空白,同时统一去掉末尾斜杠
    $exclude = array_map(function($item){
        return rtrim(trim($item), '/');
    }, explode(',', $db_links)); 
    // 处理当前URL的末尾斜杠,和数组规则保持一致
    $current_url = rtrim($url, '/');
    if(in_array($current_url, $exclude)){
          echo "display:none"; 
    } 
}

如果修改后仍存在匹配问题,可以临时添加调试代码确认两者内容是否完全一致:

// 调试用,上线前删除即可
var_dump($current_url, $exclude);

内容的提问来源于stack exchange,提问作者dcron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:45:05