0
내 MySQL 데이터베이스의 이름 집합과 CSV 파일의 문자열 집합 사이에 매우 간단한 텍스트 일치를 수행합니다. 실제로 비교하기 전에 문자열 정규화 옵션 배열로 preg_replace를 실행합니다. 중요한 대체품 중 하나는 불규칙한 약어를 규칙적인 전체 단어로 바꾸는 것입니다. 그러나 나는 "Inc."와 같은 약어를 붙잡을 수는 없다. 및 "Inc", "Corp." 그리고 후행 기간이있을 수도 있고 그렇지 않을 수도있는 "법인". 여기 preg_replace와 일치하는 텍스트의 문자열 정규화
$patterns = array();
$patterns[0] = '/\s+/';
$patterns[1] = '/&/';
$patterns[2] = '/\bAssoc\.{0,1}\b/';
$patterns[3] = '/\bInc(?!\.)\b/';
$patterns[4] = '/\b(L\.?){2}P\.?/';
$patterns[5] = '/\bUniv(\s|\.)+\b/';
$patterns[6] = '/\bCorp\.?/';
$patterns[7] = '/\bAssn\.?/';
$patterns[8] = '/\bUnivesity\b/';
$patterns[9] = '/\bIntl.\b/';
$replacement = array();
$replacement[0] = ' ';
$replacement[1] = 'and';
$replacement[2] = 'Association';
$replacement[3] = 'Inc.';
$replacement[4] = '';
$replacement[5] = 'University';
$replacement[6] = 'Corporation';
$replacement[7] = 'Association';
$replacement[8] = 'University';
$replacement[9] = 'International';
$name = trim(preg_replace($patterns,$replacement,$name));
if(stristr($name,trim(preg_replace($patterns,$replacement,$org->org_name)))) return $org->org_id;
// code here
}
이 (올 더) 작동하지 않는 일부 일치 있습니다 :
건초 더미 => 니들
- "양자리 국제 여기 코드입니다 Inc. " => "Aries Intl. Inc."
- "Phelps Dodge Corporation"=> "Phelps Dodge Corp."
- "McDermott Incorporated"=> "McDermott Inc."
내가 알 수있는 한, "Inc" and "Corp.", 최소한 일관되게. 어떤 도움이 필요합니까?
일부 출력, 샘플 입력 작업 비, 원하는 출력이 될 것이다 큰 :) – Dogbert
어쩌면 일부 단위 테스트를 불확실성을 해결하는 데 도움이됩니다. – dogmatic69
단어가 바로 뒤 따르지 않으면 '\ b'가 점 뒤에 일치하지 않을 수 있습니다. 그리고'{0,1} '대신에'?'를 써주세요. – mario