比较 2 个字符串,减去相同的字符和 return 新值

compare 2 strings, subtract the same characters and return the new values

我有两个字符串,它可以更多然后两个可能是 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 时它应该 returns 我的字符串如下

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

我尝试了这个功能但没有成功if (strcmp($var1, $var2) === 0) {

您的想法可能看起来并不明显,但 str_replace 应该适用于此。

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

如果 $a$b 中找到,那么 $remaining 将是 $b 并从中删除 $a 的字符,否则 $remaining 将是 $b.

的不变值

您可以使用 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

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

$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