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

PHP三元表达式能否添加多条件实现ID属性多关键词匹配

问题解答

完全可以在现有三元表达式基础上叠加多层条件实现多关键词匹配,你可以根据后续关键词数量选择两种实现方案:


方案1:嵌套三元表达式(适合关键词数量≤3的场景)

三元运算符支持嵌套,只要用括号明确判断优先级即可,不会影响原有i.p. rating的判断逻辑,示例代码如下(将你的新增关键词和对应输出值替换为你实际的业务内容即可):

if(!$customLength){
?>
<th class="sku-label-value download-url-construct <?=$columnClassParent ?>">
 <span 
    data-option-id="<?=$values['option_id']?>"
    id="ns_code_<?= (stripos($title, 'i.p. rating') !== false) ? 'iprating' : (stripos($title, '你的新增关键词') !== false ? '对应输出值' : $title) ?>"
    data-code-sku="<?=$dataCodeSku ?>">
<?=$values['sku'] ?></span>
</th>
<?php
}

逻辑执行顺序:

  • 优先判断$title是否包含i.p. rating,匹配成功输出iprating
  • 不匹配的话进入第二个判断,检查是否包含新增关键词,匹配成功输出对应自定义值
  • 所有规则都不匹配,输出原始$title

方案2:映射表匹配(适合后续还要新增更多关键词的场景)

如果后续还有新增关键词的需求,更推荐用映射数组实现,代码可读性和可维护性更高,避免嵌套三元过长容易出错的问题:

<?php
// 提前定义关键词和输出值的映射规则,后续加规则直接改这个数组就行
$titleIdMap = [
    'i.p. rating' => 'iprating',
    'warranty period' => 'warranty', // 示例新增规则
    'material type' => 'material' // 可随时加更多规则
];
$idSuffix = $title;
foreach ($titleIdMap as $keyword => $replaceVal) {
    if (stripos($title, $keyword) !== false) {
        $idSuffix = $replaceVal;
        break; // 匹配到第一条规则就终止,避免冲突
    }
}

if(!$customLength){
?>
<th class="sku-label-value download-url-construct <?=$columnClassParent ?>">
 <span 
    data-option-id="<?=$values['option_id']?>"
    id="ns_code_<?= $idSuffix ?>"
    data-code-sku="<?=$dataCodeSku ?>">
<?=$values['sku'] ?></span>
</th>
<?php
}
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:15:01