1

我有以下模式的字符串。

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

等等。该模式遵循相同的规则,每个字符串都有 4 组字母,由破折号分隔。但是字符串可能有一个组,上面有一个或两个字母的任意组合。

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

如果组中的字母一致,我会更容易使用strpossubstr功能来做到这一点。但是这里的字母在一个组中并不一致。在这种情况下如何做到这一点?

谢谢

4

3 回答 3

4

我会将字符串分解为一个数组,对其进行处理并内爆回一个字符串:

$a = explode('-', $string);
// do stuf on element 2 and 3
$string = implode('-', $a);
于 2012-10-11T17:57:57.677 回答
2

$字符串 = abcd;

list($a,$b,$c,$d) = explode("-",$string);

然后,您可以从那里连接。

于 2012-10-11T17:59:46.813 回答
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');
于 2012-10-11T18:06:22.597 回答