【问题标题】:compare 2 strings, subtract the same characters and return the new values比较 2 个字符串,减去相同的字符并返回新值
【发布时间】:2017-07-07 20:05:08
【问题描述】:

我有两个字符串,可以多于两个,可能是 5 或 6

 $a =  2012-05-18 usr abc removed device id=858 sn=abc cmmac=000 drumac=123
 $b =  2012-05-18 usr abc removed device id=858 sn=abc cmmac=000 drumac=12352015-03-26 usr mabdel001c removed device id=814 sn=abcd cmmac=1234 drumac=000

我需要帮助我需要一个函数或任何方式,当我将 $a 与 $b 进行比较时,它应该只返回如下字符串

$remaining = '2015-03-26 usr mabdel001c removed device id=814 sn=abcd cmmac=1234 drumac=000';

我试过这个功能没有运气if (strcmp($var1, $var2) === 0) {

【问题讨论】:

  • 请注意此处寻求帮助的规则:您应该自己完成这项工作,我们只会在您遇到困难并需要帮助解决您自己无法解决的问题时提供帮助。跨度>
  • 没有一个起始字符串与结果字符串匹配
  • @Andreas 没错,但这与 OP 的问题相符。
  • 为什么这被否决了?
  • @arkascha 所以这就是我所做的,你还想从我这里得到什么,我把所有的解释都放了

标签: php string unique


【解决方案1】:

您的想法可能看起来并不明显,但str_replace 应该可以解决这个问题。

$remaining = str_replace($a, '', $b);

如果在$b 中找到$a,则$remaining 将是$b,其中删除了$a 的字符,否则$remaining 将是$b 的不变值。

【讨论】:

    【解决方案2】:

    您可以使用 str_replace 并替换为空:

    $a =  "2012-05-18 usr abc removed device id=858 sn=abc cmmac=000 drumac=123";
    $b =  "2012-05-18 usr abc removed device id=858 sn=abc cmmac=000 drumac=12352015-03-26 usr mabdel001c removed device id=814 sn=abcd cmmac=1234 drumac=000";
    
    Echo str_replace($a, "", $b);
    

    https://3v4l.org/KiZLN

    【讨论】:

    • 我发现我参加聚会有点晚了。这就是在手机上打字的缺点。该页面不会更新新答案。我应该删除我的答案吗?
    • 不,没关系。类似的答案是无害的,有时人们可以从看到稍微不同的解释中受益,IMO。
    【解决方案3】:

    这里的另一种方法是跳过匹配的内容。

    $a =  '2012-05-18 usr abc removed device id=858 sn=abc cmmac=000 drumac=123';
    $b =  '2012-05-18 usr abc removed device id=858 sn=abc cmmac=000 drumac=12352015-03-26 usr mabdel001c removed device id=814 sn=abcd cmmac=1234 drumac=000';
    if(strpos($b, $a) !== false) {
        echo substr($b, (strrpos($b, $a) + strlen($a)));
    }
    

    会起作用的。如果您有多个匹配项,尽管您将需要不同的方法(因为这仅适用于 1 次迭代)。 str_replace 可能是您最好的方法。

    演示:https://eval.in/829490

    【讨论】:

      【解决方案4】:

      只需获取第一个字符串的长度,确保它匹配另一个字符串。

      $a =  '2012-05-18 usr ctaylo01c removed device id=858 sn=BELAH4249 cmmac=0005CA91BE7C drumac=000D67150F35';
      $b =  '2012-05-18 usr ctaylo01c removed device id=858 sn=BELAH4249 cmmac=0005CA91BE7C drumac=000D67150F352015-03-26 usr mabdel001c removed device id=814 sn=BELAH4126 cmmac=0005CA91C7B0 drumac=000D67151359';
      
      If(substr($b, 0, strlen($a)) == $a) echo substr($b, strlen($a));
      

      输出:

      2015-03-26 usr mabdel001c removed device id=814 sn=BELAH4126 cmmac=0005CA91C7B0 drumac=000D67151359
      

      感谢 @Andreas 让我注意到缺少的内容。

      【讨论】:

      • 无需删除。你可以编辑它来工作。你只需要添加一个 if() 就可以了
      猜你喜欢
      • 1970-01-01
      • 2011-12-25
      • 2013-09-04
      • 1970-01-01
      • 2016-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多