2015-02-09 109 views
0

是否有方法檢查兩個數組是否具有相似的值,注意不相等但相似。類似於mysql用LIKE找到類似的詞的東西。檢查兩個數組是否包含相似的值

在topten.txt我有以下文字: WORKFORCE

在company.txt我有以下網址: Workforce-Holdings-Ltd

所以基本上我想以搜索公司字WORKFORCE。 txt和結果輸出應爲Workforce-Holdings-Ltd

是否可以這樣做。

我也許在想preg_grep()也許?

+0

我認爲有可能做到這一點,你可以在使用正則表達式之前轉換小寫。 – lighter 2015-02-09 03:53:51

+0

這將工作我認爲,不幸的是我不是那麼好regx,基本瞭解 – 2015-02-09 03:55:35

+0

我認爲你可以使用這個網站來嘗試它,你寫的正則表達式。 https://www.regex101.com/。我認爲你有更多相同的工作,所以你可以嘗試使用'g'模式。 – lighter 2015-02-09 04:00:55

回答

1

Preg_grep是爲這個完美的。只要您正在搜索的數組值你可以做類似如下:

<?php 

$companies = [ 
    'acme inc', 
    'wORkForce-holdings-ltd' 
]; 

$search = 'WORKFORCE'; 

var_dump(preg_grep('/' . preg_quote($search, '/') . '/i', $companies)); 

這裏是一個ideone example

+0

也許在兩邊都加上'\ b'聲明,以避免包含包含搜索字符串。 – 2015-02-09 04:10:33

+0

可能。雖然我認爲這個問題正在尋找類似於SQL'LIKE'語法的東西,你通常會在查詢中添加/追加'%'。在這種情況下,它還會返回包含搜索查詢的單詞。 – Scopey 2015-02-09 04:12:13

1

您不需要使用preg match。相反,你可以像使用strpos:

$result=array(); 
$a=array('WORKFORCE'); 
$b=array('Workforce-Holdings-Ltd'); 
foreach($a as $array1){ 
    foreach($b as $array2){ 
     if (strpos(strtolower($array2),strtolower($array1)) !== false) { 
      $result[] = 'true'; 
     } 
     else { 
      $result[] = 'false'; 
     } 
    } 
} 

這會給你與真正的數組,如果比賽是確定的或者虛假的比賽是不正常的所有數組元素

相關問題