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

如何将字符串中#后跟整数的组合替换为FALSE?

解决PHP中替换#加整数为FALSE的问题

你的问题出在str_replace只替换了#符号本身,却没把后面跟着的整数一起替换掉,所以才会出现FALSE1这种不符合预期的结果。要处理可变长度的整数,咱们得用正则表达式匹配来搞定。

修改后的代码方案

直接用preg_replace来匹配#后面的一个或多个数字,然后整体替换成FALSE:

$newlogicexpression = '#1 and (1743327.12 > 10)';
// 匹配#后跟任意数量的数字,替换为FALSE
$newlogicexpression = preg_replace('/#\d+/', 'FALSE', $newlogicexpression);
$this->logger->debug($newlogicexpression);

为什么这么做?

  • 正则表达式/#\d+/的含义:
    • #:匹配字面量的#符号
    • \d+:匹配一个或多个数字(\d代表数字,+表示至少出现一次)
  • 这样不管#后面是1位还是多位整数(比如#123、#4567),都会被完整替换成FALSE,不会留下多余的数字。

可选优化:保留存在性判断(如果需要)

如果你还是想先判断字符串里有没有#开头的数字组合再执行替换,可以这么写:

$newlogicexpression = '#1 and (1743327.12 > 10)';
if (preg_match('/#\d+/', $newlogicexpression)) {
    $newlogicexpression = preg_replace('/#\d+/', 'FALSE', $newlogicexpression);
    $this->logger->debug($newlogicexpression);
}

这样处理后,你的预期结果FALSE and (1743327.12 > 10)就能正常输出啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:59:33