我有以下模式的字符串。
A-B-C-D
A-AB-C-DP
AQ-B-MN-QD
等等。该模式遵循相同的规则,每个字符串都有 4 组字母,由破折号分隔。但是字符串可能有一个组,上面有一个或两个字母的任意组合。
现在我想做的是替换第二个和第三个破折号之后的字母。
如果组中的字母一致,我会更容易使用strpos
和substr
功能来做到这一点。但是这里的字母在一个组中并不一致。在这种情况下如何做到这一点?
谢谢
我会将字符串分解为一个数组,对其进行处理并内爆回一个字符串:
$a = explode('-', $string);
// do stuf on element 2 and 3
$string = implode('-', $a);
$字符串 = abcd;
list($a,$b,$c,$d) = explode("-",$string);
然后,您可以从那里连接。
正则表达式的方式。尝试用你$2
的$3
价值替换
# replace $2, $3 with the value that you want
echo preg_replace('#([^-]+)\-([^-]+)\-([^-]+)\-([A-Z]+)#', '$1-$2-$3-$4', 'AQ-B-MN-QD');