我有一個列入白名單的單詞列表:kitchen chair table
;PHP - 從文本列表中提取單詞
給出一個文本,我想知道哪些白名單詞在裏面。
會是什麼好方式來達到這個目的?我的意思是,容易理解,表現良好?
我有一個列入白名單的單詞列表:kitchen chair table
;PHP - 從文本列表中提取單詞
給出一個文本,我想知道哪些白名單詞在裏面。
會是什麼好方式來達到這個目的?我的意思是,容易理解,表現良好?
爲了達到這個目的,你應該使用帶有單詞邊界的正則表達式。如果沒有,只是依靠路線的位置,如「熱」的話會像裏面的話匹配「欺騙」
$word_list = "kitchen chair table tables";
$words = explode(' ', $word_list);
$text = 'There is a table in the kitchen';
foreach($words as $word) {
if(preg_match('/\b' . $word . '\b/', $text)) {
echo "$word is in the text\n";
}
}
此輸出:
kitchen is in the text
table is in the text
注意,這將不匹配table
如果$text
只有tables
在裏面。
您可以使用php explode函數來分解帶有空格的單詞表。然後它會返回一個數組。同樣的事情將與輸入文字完成。這樣,你將有兩個數組。
之後,您可以使用array_intersect函數,該函數將返回這兩個數組中的常用詞。
$array = explode(' ',$wordlist);
$result = array_intersect($array, $inputarray);
$ result將包含所有常見單詞。
不是很清楚的問題,但這樣的事情可能會爲你工作:
$str = "kitchen chair table";
$search = "kitchen bathroom chair";
$arr1 = explode(' ', $str);
$arr2 = explode(' ', $search);
print_r(array_intersect($arr1, $arr2));
OUTPUT:
Array
(
[0] => kitchen
[1] => chair
)
你需要知道的那些話讓經常在字符串中或他們的確切位置? 如果不是,我建議你將你的列表轉換爲一個帶有「explode('',$ list)」的數組。 然後您遍歷該數組並使用strpos進行搜索。
我能提供的示例代碼,如果你想:)
如果你需要的位置,你將不得不使用正則表達式所有出現。
你在找特定的單詞還是單詞? –
'array_unique(explode(「」,$ words))''會給你一個包含所有不同單詞的數組 –
@Mr D:特定單詞 - 我已經編譯了白名單 – dan