是否有方法檢查兩個數組是否具有相似的值,注意不相等但相似。類似於mysql用LIKE
找到類似的詞的東西。檢查兩個數組是否包含相似的值
在topten.txt我有以下文字: WORKFORCE
在company.txt我有以下網址: Workforce-Holdings-Ltd
所以基本上我想以搜索公司字WORKFORCE
。 txt和結果輸出應爲Workforce-Holdings-Ltd
。
是否可以這樣做。
我也許在想preg_grep()也許?
是否有方法檢查兩個數組是否具有相似的值,注意不相等但相似。類似於mysql用LIKE
找到類似的詞的東西。檢查兩個數組是否包含相似的值
在topten.txt我有以下文字: WORKFORCE
在company.txt我有以下網址: Workforce-Holdings-Ltd
所以基本上我想以搜索公司字WORKFORCE
。 txt和結果輸出應爲Workforce-Holdings-Ltd
。
是否可以這樣做。
我也許在想preg_grep()也許?
Preg_grep是爲這個完美的。只要您正在搜索的數組值你可以做類似如下:
<?php
$companies = [
'acme inc',
'wORkForce-holdings-ltd'
];
$search = 'WORKFORCE';
var_dump(preg_grep('/' . preg_quote($search, '/') . '/i', $companies));
這裏是一個ideone example。
也許在兩邊都加上'\ b'聲明,以避免包含包含搜索字符串。 – 2015-02-09 04:10:33
可能。雖然我認爲這個問題正在尋找類似於SQL'LIKE'語法的東西,你通常會在查詢中添加/追加'%'。在這種情況下,它還會返回包含搜索查詢的單詞。 – Scopey 2015-02-09 04:12:13
您不需要使用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';
}
}
}
這會給你與真正的數組,如果比賽是確定的或者虛假的比賽是不正常的所有數組元素
我認爲有可能做到這一點,你可以在使用正則表達式之前轉換小寫。 – lighter 2015-02-09 03:53:51
這將工作我認爲,不幸的是我不是那麼好regx,基本瞭解 – 2015-02-09 03:55:35
我認爲你可以使用這個網站來嘗試它,你寫的正則表達式。 https://www.regex101.com/。我認爲你有更多相同的工作,所以你可以嘗試使用'g'模式。 – lighter 2015-02-09 04:00:55