查找数组中的字符串是否共享子字符串并将其修剪出来

时间:2015-07-01 17:24:12

标签: php

我有一个字符串数组,让我们说它们是文件名,看起来像这样

$filenames = [
    "Index",
    "ACME Corp - Services",
    "Products - ACME Corp",
    "Contact Us - ACME Corp",
    "History - ACME Corp - The greatest producer of ACME widgets!"
];

假设我无法控制这些。

我将如何编写一个

的算法
  • 弄清楚ACME Corp是一个常见的子字符串,但是没有出现在所有字符串中
  • 修剪ACME Corp文件名(它可以留下破折号和空格)

我无法绕过第一步 - 如何遍历此数组并找到共享子字符串?

更新:只是为了解决一些评论,它会有字边界并且不区分大小写,因此ACME Corpacme corp是可接受的匹配,但匹配的任何内容一个单词中的那种模式不会。

1 个答案:

答案 0 :(得分:2)

在不知道你遇到什么问题的情况下,我试图解决这个问题。您可以按空间分解数组中的每个字符串,并捕获字符串出现在数组中的出现次数,但这并不能解释短语。搜索引擎是合适的解决方案,但不知道您正在寻找什么术语或短语,它不会对您有所帮助。

爆炸粗略的想法:

$words = array();
foreach ($stringArr as $str) {
    $parts = explode(" ", $str);
    foreach ($parts as $word) {
        $words[$word] += 1;
    }
}