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

PHP实现将逗号后两个字符替换为".-"的解决方案求助

解决字符串替换问题:将逗号后两位字符替换为".-"

嘿,我来帮你搞定这个字符串替换的问题~你之前用substr直接截断末尾的方式显然不对,那是一刀切的操作,没法精准替换目标位置的内容。下面给你两种靠谱的解决方案:

方法一:正则表达式(推荐,适配多种类似场景)

正则能精准匹配到逗号后面的两个字符,不管逗号在字符串的哪个位置,都能准确替换成你想要的内容:

$str = "This product price is 23,39 and sale end after 29th June";
// 匹配逗号+任意两个字符,替换为".-"
$newStr = preg_replace('/,(..)/', '.-', $str);
echo $newStr;

这里的正则/(..)/会捕获逗号后的两个字符,然后用.-替换掉整个匹配的部分,最终输出就是你期望的结果。

方法二:字符串定位拼接(适合确定逗号位置的场景)

如果你确定字符串里只有这一个逗号,或者明确知道逗号的位置,可以用字符串定位和截取的方式拼接:

$str = "This product price is 23,39 and sale end after 29th June";
// 找到逗号的位置
$commaPosition = strpos($str, ',');

// 确保逗号存在且后面有足够的字符
if ($commaPosition !== false && isset($str[$commaPosition + 2])) {
    // 拼接:逗号前的内容 + ".-" + 逗号后第3位开始的内容
    $newStr = substr($str, 0, $commaPosition) . ".-" . substr($str, $commaPosition + 3);
    echo $newStr;
}

为什么你之前的方法出错?

你用的echo substr($string, 0, strlen($string) - 3);是从字符串开头截取到倒数第3个字符,相当于直接砍掉了字符串最后3个字符,这和你要替换特定位置内容的需求完全不符,所以才会出现错误结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:46:17