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

如何在字符串不含指定词汇时隐藏它?PHP代码问题修正

修复你的词汇检查逻辑问题

嘿,我一眼就看出问题所在了——你的循环逻辑写错啦!现在的代码只检查第一个坏词Example1,后面的Example2到Example6根本没机会被检测到,因为不管第一次匹配成功与否,你都直接break跳出循环了。

问题根源

原代码里,第一次循环时:

  • 如果Example1匹配到了,输出空然后跳出;
  • 如果没匹配到,直接输出隐藏信息然后跳出。
    完全没遍历剩下的坏词,这就是为什么只有Example1生效的原因。

修正后的代码

我们需要先遍历所有坏词,确认是否存在匹配项,再统一决定输出内容:

<?php
$eventname = $event->title;
$bad_words = array('Example1','Example2','Example3','Example4','Example5','Example6');
// 先初始化一个标记,默认没有匹配到坏词
$contains_bad_word = false;

// 遍历所有坏词,检查是否有匹配
foreach($bad_words as $bad_word){
    if(strpos($eventname, $bad_word) !== false) {
        $contains_bad_word = true;
        break; // 找到一个匹配就可以停止检查了,提升效率
    }
}

// 根据检查结果输出内容
if($contains_bad_word) {
    // 包含任意一个坏词:按原逻辑输出空(如果需要显示原标题,改成echo $eventname;即可)
    echo '';
} else {
    // 不包含任何坏词:输出隐藏提示
    echo '<div class="uk-text-contrast">'.translate('HIDDEN_INFO_DATE').'</div>';
}
?>

额外说明

如果你的实际需求是包含坏词时显示隐藏信息,不包含时显示原标题(看起来更符合“隐藏敏感内容”的逻辑),只需要把if-else的内容调换一下:

if($contains_bad_word) {
    // 包含坏词:显示隐藏提示
    echo '<div class="uk-text-contrast">'.translate('HIDDEN_INFO_DATE').'</div>';
} else {
    // 不包含坏词:显示原标题
    echo $eventname;
}

这样修改后,就能正确检查所有指定词汇,完全满足你的需求啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:43:08