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

如何用PHP正则仅替换{card}括号内的;;为;,不改动外部的;;

解决方案

你可以用preg_replace_callback实现精准替换,先匹配所有{card}(...)格式的片段,仅对括号内部的内容做替换操作,不会修改括号外的;;。

实现代码

// 原始字符串
$string = ';{card}(Secrets of Dark Magic);;{card}(Secrets of Dark Magic);;{card}(Secrets of Dark Magic);;{card}(Secrets of Dark Magic;;Called by the Grave);;{card}(Secrets of Dark Magic;;Called by the Grave;;Secrets of Dark Magic)';

// 处理逻辑
$string = preg_replace_callback('/{card}\((.*?)\)/', function ($matches) {
    // 仅替换括号内的;;为;
    $processedInner = str_replace(';;', ';', $matches[1]);
    return "{card}({$processedInner})";
}, $string);

// 输出结果
echo $string;

原理解释

  • 正则/{card}\((.*?)\)/用非贪婪匹配.*?精准捕获每个{card}对应的括号内的所有内容,不会跨括号匹配
  • 回调函数中只对捕获到的括号内内容做;;到;的替换,括号外的原有字符完全保留
    处理后输出的结果和你需要的目标格式完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:24:02