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

PHP中如何正确使用rtrim函数移除字符串末尾的多余字符

问题原因

原H2末尾的内容结构为, !(逗号+空格+感叹号),第一次调用rtrim($header, '!')仅移除了末尾的感叹号,此时处理后的字符串末尾字符为空格,并非逗号,第二次rtrim($new_header, ',')无法匹配到末尾的逗号,因此不生效。

解决方法

rtrim函数的第二个参数支持传入多个需要移除的字符,不需要分两次调用,直接一次性传入需要清理的逗号、感叹号以及空格即可:

// 把原来两行rtrim的代码替换为下面这一行即可
$new_header = rtrim($header, ',! ');

修改后的完整代码如下:

function alter_ad( $notification, $form, $entry ) {
    // 获取通知的消息内容
    $data = $notification['message'];
    // 匹配通知中的h2标签
    preg_match('/<h2>(.*?)<\/h2>/s', $data, $match);
    $header = $match[1];
    // 一次性移除末尾的逗号、感叹号、空格
    $new_header = rtrim($header, ',! ');
    
    $start = '<h2>';
    $end =  '</h2>';
    $result = replace_content_inside_delimiters($start, $end, $new_header, $data);
    $notification['message'] = $result;
    return $notification;
}

function replace_content_inside_delimiters($start, $end, $new, $source) {
    return preg_replace('#('.preg_quote($start).')(.*?)('.preg_quote($end).')#si', '$1'.$new.'$3', $source);
}

add_filter( 'gform_notification_42', 'alter_ad', 10, 3 );

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:27:03