2016-07-01 2 views
-1

쿼리에 대한 응답으로 주소를 제공하는 JSON API와 상호 작용하고 있습니다. 그런 다음 반환 된 주소 요소를 MYSQL 데이터베이스 테이블에 넣습니다.PHP의 문자열에서 중복 주소 행을 제거하십시오.

데이터는 AddressLine1, AddressLine2, Region, Postcode로 반환됩니다. 내가 가진 문제는 데이터의 품질이 상당히 낮고 많은 AddressLine1 데이터가 요소 내에서 복제된다는 것입니다. 예를 들어, 일반적인 수익 내가 "내" "내 길"에서 일부를 제거하지 않고 "123 내 집"의 두 번째 발생을 제거 할 수있는 방법을 해결하기 위해 노력하고있어

123 My House 123 My House, My Road 

수 있습니다.

나는 모든 종류의 정규식을 시도했지만 정규식은 약하다! 나는 또한 내파를 시도했지만, 내가 관리 할 수있는 것은 모든 도움이되지 않는 첫 번째 인스턴스를 제외한 모든 중복 된 단어를 제거하는 것입니다.

나는 ... 나는 단어의 첫 발생을 유지하고 있습니다 함께 그래서 내가 무엇을하게 될 겁니다 각 부분에 대한 구분 기호로 쉼표를 사용하는 모든 사람을 제거하는 방법이 필요 추측

123 My House, My Road 

누구든지 올바른 방향으로 나를 가리킬 수 있습니까? 문자열을 쉼표로 배열로 분할 한 다음 배열의 각 부분을 중복으로 검사하고 제거한 다음 다시 배열을 문자열로 재구성해야 할 필요가 있습니까? 아마도? 나는 이런 식으로 그것을 관리했습니다

...

$string = "123 My House 123 My House, My Road"; 

$split = (explode(',', $string)); 

foreach($split as $section){ 
    $cleaned = implode(' ',array_unique(explode(' ', $section))); 
    if (!empty($result)){ 
    $result = $result." ,"; 
    } 
    $result = $result.$cleaned; 
} 

echo $result; 

는 사람이 더 우아한 솔루션을 제공 할 수 있습니까?

+1

제안 :'substr (0, i)'가'substr (i, i)'와 같은지 테스트하고, 문자열의 한 부분이 같은지 테스트한다. 부품을 따라 가면서 부품의 길이를 천천히 연장시킨다). 나는 그것을 정규 표현식으로 표현할 수있는 방법이 있다고 확신한다.- 전반적으로 이것은 꽤 복잡한 문제이지만 잘못된 데이터를 정리하는 데는 거의 모든 경우에 적합한 솔루션입니다. – deceze

+0

사용중인 JSON API를 공유 할 수 있습니까? – Gordon

답변

-1

귀하의 질문은 매우 구체적이며이 질문의 대답이 귀하의 프로젝트에 장기적으로 어떻게 도움이 될지 모르겠지만,이 특별한 경우를 위해 문자열 조작 솔루션을 제공하려고했습니다.

코드를보다 정확하고 지능적으로 만들어야 첫 번째 장소에 그 두 배를 저장하지 않아야합니다. 단계의 설명에 의해

$str = '123 My House 123 My House, My Road'; 
$arr = explode(', ', $str); 
$arr[0] = implode(' ', array_unique(explode(' ', $arr[0]))); 

echo $str.'<br>'; // 123 My House 123 My House, My Road 
echo implode(', ', $arr); // 123 My House, My Road 

단계 :

  1. 을이 단순히 두 부분으로 주소를 분해 다음과 같이

    어쨌든, 당신은 교체에 사용해야하는 코드는 ,

  2. 그런 다음 이전 중단/폭발의 첫 번째 부분의 공백을 분해합니다.
  3. 내가이 도움이 되었으면 좋겠 쉼표 ,

과 함께

  • 접착제 모든 것을 다시 공간과 함께 array_unique
  • 접착제와 함께 첫 번째 부분을 중복 값을 제거합니다.

  • +0

    rip downvotes there – Ponilz

    +0

    (하나의 downvote에 대해 언급 할 필요가 없습니다. 그것은 홍수가 아니며 미래의 독자에게는 관심이 없습니다. 꼭 원한다면 의견에 넣으십시오. 그러나 일반적으로 사람들이 반응한다고 생각하지는 않습니다. 투표 피드백 요청). – halfer

    관련 문제