php-在多个字符串中查找完全相同的字符串

下面的例子.

我有一个像这样的数组:

Array
(
    [0] =>  vlakke lasflenzen PN6
    [1] =>  vlakke lasflenzen PN10
    [2] =>  vlakke lasflenzen PN16
    [3] =>  vlakke lasflenzen PN25-40
)

我不知道字符串的哪一部分相同.而且我不知道这种模式是否会保持不变.所以我不能在空间或其他东西上爆炸().

我想尝试的是提取所有四个部分中完全相同但在空间之间分割的部分.

因此,对于此示例,我需要根据它们的比较从四个字符串中提取“ vlakke lasflenzen”.

谁能帮我?

解决方法:

您正在谈论的问题也称为the longest common substring problem.

我在字符串数组中找到了an implementation for finding the longest common substring.如原始帖子中所述,用法

<?PHP
$array = array(
  'PTT757LP4',
  'PTT757A',
  'PCT757B',
  'PCT757LP4EV'
);
echo longest_common_substring($array);
// => T757
?>

相关代码

function longest_common_substring($words)
{
  $words = array_map('strtolower', array_map('trim', $words));
  $sort_by_strlen = create_function('$a, $b', 'if (strlen($a) == strlen($b)) { return strcmp($a, $b); } return (strlen($a) < strlen($b)) ? -1 : 1;');
  usort($words, $sort_by_strlen);
  $longest_common_substring = array();
  $shortest_string = str_split(array_shift($words));
  while (sizeof($shortest_string)) {
    array_unshift($longest_common_substring, '');
    foreach ($shortest_string as $ci => $char) {
      foreach ($words as $wi => $word) {
        if (!strstr($word, $longest_common_substring[0] . $char)) {
          // No match
          break 2;
        } // if
      } // foreach
      $longest_common_substring[0].= $char;
    } // foreach
    array_shift($shortest_string);
  }
  // If we made it here then we've run through everything
  usort($longest_common_substring, $sort_by_strlen);
  return array_pop($longest_common_substring);
}

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...