2012-11-04 2 views
4

도움말 내가 좋아하는 두 개의 문자열했다는 두 문자열을 비교하고 퍼센트 사이의 차이를 가지고 (PHP)

두 문자열을 비교하고 퍼센트 사이의 차이를 취할하시기 바랍니다 :

first string: 
253.0.0.0,253.0.0.0,253.0.0.0,253.0.0.0,253.0.0.0,253.0.0.0,253.0.0.0,253.0.0.0,253.0.0.0,253.0.0.0,253.0.0.0,253.0.0.0,247.0.0.24,197.0.0.35,189.0.0.98.... 
second string: 
255.255.255.127,255.255.255.127,255.255.255.127,255.255.255.127,255.255.255.127,255.255.255.127,255.255.255.127,255.255.255.127,255.255.255.127.... 

$first_array = explode(",", $out_string); 
$second_array = explode(",", $out_string_1); 
$result_array = array_merge(array_diff($first_array, $second_array), array_diff($second_array, $first_array)); 

$result = implode(",",$result_array); 
echo $result; 

답변

5

이 목적을 위해 두 가지 흥미로운 기본 기능, similar_text() 및 similar_text의 levenshtein()

예()가 있습니다

levenshtein($string1, $string2, 1, 1000, 1000000); 

EDIT 1

고려 사항 첫 번째 문자열은 항상 두 번째 문자열과 같은 양의 항목을 갖습니다. 아래 코드를 시도해보십시오. I는 테스트 목적을 위해 두 문자열을 만든 번째 문자열은 유사도 함수를 구현한다되는 문맥에 강하게 의존 9

$first_string = '253.0.0.1,253.0.0.2,253.0.0.3,253.0.0.4,253.0.0.5,253.0.0.6,253.0.0.7,253.0.0.8,253.0.0.9'; 

$second_string = '253.0.0.1,253.0.0.2,255.255.255.127,255.255.255.128,255.255.255.129,255.255.255.130,255.255.255.131,255.255.255.132,255.255.255.133'; 

$first_array = explode(',', $first_string); 

$second_array = explode(',', $second_string); 

$total_entries = count($first_array); 

$array_differences = array_diff($first_array, $second_array); 

$different_entries = count($array_differences); 

$percentage = ($different_entries/$total_entries) * 100 ; 

echo 'Difference: ' . round($percentage, 2) . '%'; 
+0

나는 그들에 대해서도 생각했다.)하지만이 작업과 관련이없는 것으로 간주됩니다. 기본적으로 배열 (IP 주소, 분명히)과 순수 문자열을 비교하는 것이기 때문입니다. – raina77ow

+0

@ raina77ow, 문자열의 IP 주소가 같습니까? –

+0

자사의 IP 주소가 RGBA 코드이고 동일한 수량을 가지고 있습니다. –

1

어떻게 에 대한 간단한 예를 들어

$difference = count($result_array)/count($first_array) * 100; 

... 같은 :

$arr1 = array(1, 2, 3, 4); 
$arr2 = array(5, 2, 4, 8); 
$res = array_diff($arr1, $arr2); 
printf("%.02f%%", count($res)/count($arr1) * 100); # 50.00% 
levenshtein의

$string1 = 'AAAb'; 
$string2 = 'aaab'; 

similar_text ($string1, $string2, $percentege); 

echo $percentege . '%'; // Output: 25% 

예() :

+0

"차이"를 "백분율 변경"으로 해석 할 수도 있습니다.이 경우 분자 항은'count ($ first_array) - count ($ result_array)'가됩니다. – Gian

+0

물론, 나는 그것이 주식에 관한 것이라고 생각했습니다. – raina77ow

+0

귀하의 코드 결과는 100 %입니다 ...하지만 두 개의 배열이 다릅니다 –

1

총 두 개의 동일한 항목 7 개 가지 항목이있다. 비교 결과 (예 : 컨텍스트)를 통해 수행하려는 작업에 대한 설명이 없으면 상자에서 유사성 기능을 제공하는 것이 거의 불가능합니다. 내가 생각할 수있는 모든 유사 기능이 유효 할 수 있지만 그 중 어느 것도 당신의 문제에 적합하지 않을 수 있습니다.

관련 문제