使用preg_match_all来解析附加的bbcode标签
P粉086993788
P粉086993788 2024-04-02 23:21:39
[PHP讨论组]

我有两种类型的 bbcode: [附件]1234[/附件] [attach=full]1234[/attach]

$message = 'this is message with attach [attach=full]1234[/attach]

我想删除字符串中的所有内容并使用:

(preg_match_all('/\[ATTACH((.*?)\](.+?)\[\/ATTACH\]/i', $message, $out, PREG_SET_ORDER))
if (preg_match_all('/\[ATTACH((.*?)\](.+?)\[\/ATTACH\]/i', $message, $out, PREG_SET_ORDER))
{   
    for ($i=0;$i<count($out);$i++)
    {
        $replace_src[] = $out[$i][0];
        $replace_str[] = $out[$i][1];
        $newMessage = str_ireplace($replace_src, $replace_str, $message);
    }
}

此代码删除[attach][/attach],但不删除[attach=full][/attach] =full 存在于消息中。

P粉086993788
P粉086993788

全部回复(1)
P粉138711794

使用preg_replace(),而不是preg_match_all()

使用可选组来匹配 attach 后的可选 =xxx

$newMessage = preg_replace('/\[ATTACH(?:=.*?)?\](.+?)\[\/ATTACH\]/i', '$1', $message);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号