我一直试图将3个字符串组合成一个字符串,但遇到了问题。
字符串在下面。
$from="/2/3/4/5/6/";
$to="/30/31/32/33/34/";
$sub="/2/3/4/5/6/7/8/9/10/11/12/";#this is dynamic, ever changing past > (/2/3/4/5/6/)
输出必须如下所示。
$output="/30/31/32/33/34/6/7/8/9/10/11/12/";
否则,如果CCD_ 1像下面那样改变。
$from="/2/3/4/5/6/";
$to="/30/31/32/33/34/";
$sub="/2/3/4/5/6/7/8/";
$output="/30/31/32/33/34/6/7/8/";
否则如果CCD_ 2改变。
$from="/2/3/4/5/6/";
$to="/30/31/";
$sub="/2/3/4/5/6/7/8/";
$output="/30/31/6/7/8/";
需要先是$to
,然后是末尾的$sub
,减去末尾/*/(eg./6/)
之前的$from
,才能组合成1个字符串。
这怎么可能?
您基本上是在存储字符串中序列化的数组结构。聪明的爆炸应该有帮助:
$output = $to
. implode('/', array_diff(
explode('/', $sub),
array_slice(explode('/', $from), 0, -2)
)) . '/';
另一种选择可以是正则表达式
这可能会帮助您获得您想要的东西:
$str1 = substr($from, -2);
$pos = strpos($sub,$str1);
$str2 = substr($sub,$pos);
$output = $to.$str2;