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
相关产品推荐
相关产品推荐

