0

我一直在尝试将 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/";

否则,如果$sub发生如下变化。

$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/";

否则如果$to发生变化,那么这个。

$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末尾,减去$from末尾之前的/*/(eg./6/)要组合成1个字符串。

这怎么可能?

4

2 回答 2

0

您基本上是在字符串中存储序列化的数组结构。聪明的爆炸应该有助于:

$output = $to
  . implode('/', array_diff(
      explode('/', $sub),
      array_slice(explode('/', $from), 0, -2)
    )) . '/';

另一种可能是正则表达式

于 2012-07-28T19:10:07.837 回答
0

这可能会帮助您获得所需的内容:

$str1 = substr($from, -2);
$pos = strpos($sub,$str1);
$str2 = substr($sub,$pos);
$output = $to.$str2;
于 2012-07-28T20:14:03.213 回答