我有以下模式的字符串。
A-B-C-D
A-AB-C-DP
AQ-B-MN-QD
等等。该模式遵循相同的规则,即每个字符串具有由短划线分隔的4组字母。但是字符串可能有一个组,其中包含一个或两个字母的任意组合。
现在我要做的是替换第二和第三个破折号之后的字母。
如果组中的字母一致,那么我可以更轻松地使用strpos
和substr
函数来执行此操作。但是这里的字母在一组中并不一致。在这种情况下如何做到这一点?
由于
答案 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');