2013-06-06 45 views
3

我想要获取PHP中两个字符串之间的交集的第一部分。类似的东西:两个字符串之间的交集的第一部分

$a = 'Metric Bob Foundation A5, Lined, Pink & Orange'; 
$b = 'Metric Bob Foundation A5, Lined, Navy & Green'; 
echo SOME_FUNCTION($a, $b); 

// Expected output: 'Metric Bob Foundation A5, Lined, ' 

任何人都可以帮助我的SOME_FUNCTION。

我用这个一个位置:

function string_intersect($string1, $string2) 
{ 
    $array1 = $array2 = array(); 

    for($i = 0, $j = 0, $s1_len = strlen($string1), $s2_len = strlen($string2);($i < $s1_len) || ($j < $s2_len); $i++, $j++) { 
     if($i < $s1_len) { 
      $array1[] = $string1[$i]; 
     } 
     if($j < $s2_len) { 
      $array2[] = $string2[$j]; 
     } 
    } 

    return implode('', array_intersect($array1, $array2)); 
} 

但它返回: //公制鲍勃基金会A5,内衬,在& RANE

这是不完全正确。正如我所说,我只想要第一节。

在此先感谢。

+0

你想比较并得到匹配从第一到第二的子字符串? –

+0

在这里看:http://stackoverflow.com/questions/1336207/finding-common-prefix-of-array-of-strings –

+0

基督教,我编辑了我的问题。 – medina

回答

2

Demo

function some_function($a, $b) 
{ 
    $result = ''; 
    $len = strlen($a) > strlen($b) ? strlen($b) : strlen($a); 
    for($i=0; $i<$len; $i++) 
    { 
     if(substr($a, $i, 1) == substr($b, $i, 1)) 
     { 
      $result .= substr($a, $i, 1); 
     } 
     else 
     { 
      break; 
     } 
    } 
    return $result; 
} 

$a = 'Metric Bob Foundation A5, Lined, Pink &amp; Orange'; 
$b = 'Metric Bob Foundation A5, Lined, Navy &amp; Green'; 
echo some_function($a, $b); 

输出

Metric Bob Foundation A5, Lined, 
0
function compString($a, $b){ 
    $arr = explode(" ", $a); 
    $brr = explode(" ", $b); 
    $final = array(); 
    for($i=0 ; $i < count($arr); $i++) 
    { 
     if($arr[$i] == $brr[$i]) 
      $final[] = $arr[$i]; 
     else 
      break; 
    } 
    echo implode(" ", $final); 
} 

使用

$a = 'Metric Bob Foundation A5, Lined, Pink &amp; Orange'; 
$b = 'Metric Bob Foundation A5, Lined, Navy &amp; Green'; 
compString($a, $b); 
0

试试这个,

<?php 
function get_match($a, $b) 
{ 
$tmp=''; 
$a=str_split($a); 
$b=str_split($b); 
foreach($a as $key => $data) 
{ 
    if($data==$b[$key]) 
$tmp.=$data; 
else 
return $tmp; 
    } 
return $tmp; 
} 
$a = 'Metric Bob Foundation A5, Lined, Pink &amp; Orange'; 
$b = 'Metric Bob Foundation A5, Lined, Navy &amp; Green'; 
echo get_match($a, $b); 


?> 

输出

Metric Bob Foundation A5, Lined, 
0
function getIntersection ($str1,$str2) 
{ 
    //get the min length of str1 & str2 
    $l = strlen($str1) <= strlen($str2)? strlen($str1):strlen($str2); 
    $intersection = ""; 
    //substring length 
    $i = 0; 
    while($i < $l && (substr($str1,0,$i) == substr($str2,0,$i))) 
    { 
     $i++; 
    } 
    return substr($str1,0,$i-1); 
} 
$a = 'Metric Bob Foundation A5, Lined,sdf Pink &amp; Orange'; 
$b = 'Metric Bob Foundation A5, Lined, Navy &amp; Green'; 
echo getIntersection ($a, $b); 

输出:

公制鲍勃基金会A5,内衬,

Demo Link

相关问题