如何解决PHP 在特定字符串后替换值
我有这个字符串:$path = "[other values] and dateStart >= '2021-01-01' and dateEnd <= '2021-12-31' and [other values ...]'";
我要做的是用 dateStart
替换 2021-02-02
之后的值。
我尝试使用 $test = substr($path,strpos($path,'dateStart >= '));
但它只返回“dateStart”之前的所有内容...
有什么想法吗?
解决方法
$date = '2021-01-01';
$replace = "2021-02-02";
$path = "[other values] and dateStart >= '2021-01-01' and dateEnd <= '2021-12-31' and [other values ...]'";
$pos = strpos($path,$date);
$test = substr($path,$pos);
$test = $test.$replace.substr($path,$pos + strlen($date));
,
如果你想替换 dateStart,你可以使用一个模式来匹配类似模式的日期,并用你的新字符串替换匹配。
然后您可以更新模式以替换 dateEnd。
\bdateStart\h+>=\h+'\K\d{4}-\d{2}-\d{2}(?=')
$re = '/\bdateStart\h+>=\h+\'\K\d{4}-\d{2}-\d{2}(?=\')/m';
$path = "[other values] and dateStart >= '2021-01-01' and dateEnd <= '2021-12-31' and [other values ...]'";
echo preg_replace($re,'2021-02-02',$path);
输出
[other values] and dateStart >= '2021-02-02' and dateEnd <= '2021-12-31' and [other values ...]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。