替换第2和第3个破折号后出现的字符

时间:2012-10-11 17:54:49

标签: php string

我有以下模式的字符串。

A-B-C-D
A-AB-C-DP
AQ-B-MN-QD

等等。该模式遵循相同的规则,即每个字符串具有由短划线分隔的4组字母。但是字符串可能有一个组,其中包含一个或两个字母的任意组合。

现在我要做的是替换第二和第三个破折号之后的字母。

如果组中的字母一致,那么我可以更轻松地使用strpossubstr函数来执行此操作。但是这里的字母在一组中并不一致。在这种情况下如何做到这一点?

由于

3 个答案:

答案 0 :(得分:4)

我会将字符串分解为数组,处理它并内爆回字符串:

$a = explode('-', $string);
// do stuf on element 2 and 3
$string = implode('-', $a);

答案 1 :(得分:2)

$ string = a-b-c-d;

列表($ a,$ b,$ c,$ d)= explode(“ - ”,$ string);

然后你可以从那里连接起来。

答案 2 :(得分:1)

正则表达式的方式。尝试使用您的值

替换$2$3
# replace $2, $3 with the value that you want
echo preg_replace('#([^-]+)\-([^-]+)\-([^-]+)\-([A-Z]+)#', '$1-$2-$3-$4', 'AQ-B-MN-QD');