0
我執行從我的MySQL數據庫將一組名稱,並從一個CSV文件一組字符串之間一個非常簡單的文本匹配的文本匹配。在進行實際的比較之前,我運行帶選項數組的preg_replace來標準化字符串。重要的替代之一是將不規則縮寫改爲常規全文。但我似乎無法捕捉像「公司」這樣的縮寫。和「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
}
下面是一些沒有工作的匹配(更多的驚喜):
草堆=>針
- 「白羊座國際公司」 =>「Aries Intl。Inc.」
- 「菲爾普斯道奇公司」=>「菲爾普斯道奇公司」
- 「McDermott Incorporated」=>「McDermott Inc.」
至於我可以告訴大家,這不是趕上「公司」和「公司」,至少不一致。任何幫助?
一些非工作的樣本輸入,有輸出,以及所需的輸出將是巨大的:) – Dogbert 2011-04-06 23:20:35
也許一些單元測試將幫助清理你的不確定性 – dogmatic69 2011-04-06 23:21:50
除非一個字緊隨'\ B'可能不點後匹配。而不是'{0,1}',請寫'?'。 – mario 2011-04-06 23:23:26