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

为什么PHP中preg_replace执行后原字符串未发生修改?

问题原因

preg_replace 不会修改你传入的原$string变量,所有替换后的结果只会通过返回值输出,你第二段代码没有接收这个返回值,自然看不到修改效果。

两段代码的差异说明

  • 第一段代码直接把preg_replace的返回值传给var_dump输出,所以能拿到符合预期的替换结果。
  • 第二段代码仅执行了替换操作,但没有把返回的替换后字符串赋值给任何变量,你定义的原$string变量自始至终都没有被修改,所以var_dump输出的还是初始的未改动内容。

修正后的代码示例

<?php
$pattern = '/\[.*?\]/';
$string = 'INSERTED, Placement, 123, [status, companyUrl, hoursPerDay], 1984-05-15 05:00:35.167';
// 接收返回值覆盖原变量即可
$string = preg_replace($pattern, 'null', $string);
var_dump($string);

你对返回值规则的理解完全正确,只是没注意到preg_replace没有设计引用参数来修改原输入字符串,PHP字符串默认是传值传递,原变量不会被函数内部操作修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:09:03