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

如何用PHP为WordPress中H2标签间的随机句子添加加粗格式

实现WordPress中H2标签间随机/固定句子自动加粗

可以通过WordPress的the_content过滤器结合PHP正则实现需求,以下是两种方案:

一、随机句子加粗实现

将以下代码添加到主题的functions.php文件或自定义插件中:

add_filter('the_content', 'bold_random_sentence_between_h2');
function bold_random_sentence_between_h2($content) {
    // 按H2标签分割内容,保留H2标签本身
    $blocks = preg_split('/(<h2[^>]*>.*?<\/h2>)/i', $content, -1, PREG_SPLIT_DELIM_CAPTURE);
    
    foreach ($blocks as &$block) {
        // 跳过H2标签,只处理正文内容部分
        if (!preg_match('/<h2[^>]*>.*?<\/h2>/i', $block)) {
            // 提取所有以.或?结尾的句子(支持跨行匹配)
            preg_match_all('/\s*([^.?!]+[.?!])\s*/s', $block, $matches);
            $sentences = $matches[1];
            
            if (!empty($sentences)) {
                // 随机挑选一个句子
                $random_index = array_rand($sentences);
                $target_sentence = $sentences[$random_index];
                // 替换为加粗格式,处理首尾空格
                $block = str_replace($target_sentence, '<b>' . trim($target_sentence) . '</b>', $block);
            }
        }
    }
    
    return implode('', $blocks);
}

代码说明:

  1. 利用the_content过滤器拦截文章输出内容,这是WordPress处理内容的标准方式
  2. 按H2标签分割内容,确保每个H2对应的正文区块单独处理
  3. 用正则提取区块内所有符合规则的句子(匹配到.或?结尾的完整语句)
  4. 随机选中一个句子,替换为<b>包裹的加粗格式
  5. 拼接所有区块返回处理后的内容

二、固定位置句子加粗实现(简化方案)

如果随机逻辑不符合需求,可改为固定加粗第1/2/3句,示例代码如下:

add_filter('the_content', 'bold_fixed_sentence_between_h2');
function bold_fixed_sentence_between_h2($content) {
    $blocks = preg_split('/(<h2[^>]*>.*?<\/h2>)/i', $content, -1, PREG_SPLIT_DELIM_CAPTURE);
    
    foreach ($blocks as &$block) {
        if (!preg_match('/<h2[^>]*>.*?<\/h2>/i', $block)) {
            preg_match_all('/\s*([^.?!]+[.?!])\s*/s', $block, $matches);
            $sentences = $matches[1];
            
            if (!empty($sentences)) {
                // 固定选第1句(索引0),选第2句用1,第3句用2
                $target_index = 0;
                if (isset($sentences[$target_index])) {
                    $target_sentence = $sentences[$target_index];
                    $block = str_replace($target_sentence, '<b>' . trim($target_sentence) . '</b>', $block);
                }
            }
        }
    }
    
    return implode('', $blocks);
}

注意事项:

  • 若内容包含特殊字符(如$、*),可将str_replace替换为preg_replace避免匹配错误:
    $block = preg_replace('/\Q' . preg_quote($target_sentence, '/') . '\E/', '<b>' . trim($target_sentence) . '</b>', $block, 1);
    
  • 可根据实际内容调整正则规则,比如需要匹配感叹号结尾的句子,将正则改为/([^.?!]+[.?!])/s即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:15:40