在PHP中查找两个字符串的匹配部分

ube*_*sch 9 php uri string-matching

我正在寻找一种简单的方法来在PHP中找到两个字符串的匹配部分(特别是在URI的上下文中)

例如,考虑两个字符串:

http://2.2.2.2/~machinehost/deployment_folder/

/〜machinehost/deployment_folder /用户/鲍勃/设置

我需要的是从第二个字符串中删除这两个字符串的匹配部分,从而导致:

用户/鲍勃/设置

在将第一个字符串作为前缀附加之前,形成一个绝对URI.

是否有一些简单的方法(在PHP中)比较两个任意字符串以匹配其中的子字符串?

编辑:正如所指出的,我的意思是两个字符串共有的最长匹配子字符串

Aif*_*Aif 0

我不确定您的完整请求,但想法是:

让 A 成为您的 URL,B 成为您的“/~machinehost/deployment_folder/users/bob/settings”

  • 在 A 中搜索 B -> 你得到一个索引 i (其中 i 是 B 在 A 中的第一个 / 的位置)
  • 让 l = 长度(A)
  • 您需要将 B 从 (li) 剪切到长度 (B) 以获取 B 的最后一部分 (/users/bob/settings)

我还没有测试过,但如果你真的需要,我可以帮助你让这个出色的(讽刺的)解决方案发挥作用。

请注意,使用正则表达式可能是这样的

$pattern = "$B(.*?)"
$res = array();
preg_match_all($pattern, $A, $res);
Run Code Online (Sandbox Code Playgroud)

编辑:我认为你最后的评论使我的回复无效。但你想要的是找到子字符串。因此,您可以首先从一个重型算法开始,尝试在 {2, length(B)} 中找到 A 中的 B[1:i],然后使用一些动态编程的东西。