php - 查找数组中的字符串是否共享子字符串并将其修剪掉

标签 php

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

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

假设我无法控制这些。

我将如何编写一个算法来实现

  • 弄清楚ACME Corp是一个公共(public)子字符串,但并未出现在所有字符串中
  • 修剪ACME Corp文件名之外(可以留下破折号和空格)

我无法理解第一步 - 如何迭代这个数组并找到共享子字符串?

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

最佳答案

在不知道您要解决什么问题的情况下,这是一个棘手的问题。您可以按空格分解数组中的每个字符串并捕获该字符串在数组中出现的次数,但这不考虑短语。搜索引擎是合适的解决方案,但如果不知道您要查找的术语或短语,它不会对您有太大帮助。

分解粗略的想法:

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

关于php - 查找数组中的字符串是否共享子字符串并将其修剪掉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31167869/

相关文章:

php - 从获取的数据库结果中删除生成的 JSON 字符串中的额外双引号

javascript - PHP 和 Ajax : manage list update

php - Laravel 5.3 在 API 中过滤搜索数据

具有默认值的 PHP 赋值

php - Soap Webservice 解析 iPhone UIWebView 的 Typo3 链接

php - 下载期间如何解决 cUrl 损坏文件

java - 学习不同代码的最佳方法是什么?

php - 仅从几个 Mysql 字段创建一个 json 数组,同时输出其他字段

php - Laravel 迁移名称太长

php - 在单个服务器上为报告模块使用单独的数据库有什么优点吗?