php 提取数组中相同的字符串

 ps:文章是转载的,create_funciton()被禁用,只能分离出来 

转载地址:https://oomake.com/question/3189410

$array = array(
  '西区融景城1区',
  '西区融景城东区',
  '西区融景城2期',
  '融景城西区'
);
$return_str = longest_common_substring($array);
$return_str = mb_convert_encoding($return_str,  'utf-8' ,'utf-8');
$return_str = json_decode( json_encode( $return_str ) );
die;
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;');
  $sort_by_strlen = "niming";
  usort($words, $sort_by_strlen);
  $longest_common_substring = array();
  $shortest_string = mb_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);
}
function niming($a, $b){
  if (strlen($a) == strlen($b)) { 
    return strcmp($a, $b); 
  } 
  return (strlen($a) < strlen($b)) ? -1 : 1;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值