首先,讓我解釋我將如何處理這段代碼。我有一個數據庫和一個用戶界面來搜索其中的值。用戶可能會輸入多個關鍵字。所以我需要檢查數組中是否存在數組中的所有值。檢查字符串是否包含數組的所有值
舉例來說,如果他們將鍵入「青蘋果」,我有這樣的一個字符串值「這綠色雜交鬆蘋果是嚴重」,我應該顯示該搜索結果。在這個帳戶上,我想出了一點,我需要找到一種方法來檢查字符串值是否包含數組中的所有值。
萬分感謝
首先,讓我解釋我將如何處理這段代碼。我有一個數據庫和一個用戶界面來搜索其中的值。用戶可能會輸入多個關鍵字。所以我需要檢查數組中是否存在數組中的所有值。檢查字符串是否包含數組的所有值
舉例來說,如果他們將鍵入「青蘋果」,我有這樣的一個字符串值「這綠色雜交鬆蘋果是嚴重」,我應該顯示該搜索結果。在這個帳戶上,我想出了一點,我需要找到一種方法來檢查字符串值是否包含數組中的所有值。
萬分感謝
我猜mysql的全文搜索可以幫助你,如果你從數據庫中的數組。
如果您不是通過TEXT
進行搜索,則可以使用MySQL Like。
CREATE TABLE TableA (
`text` VARCHAR(255) NOT NULL PRIMARY KEY
);
INSERT INTO TableA (`text`) VALUES
('I like green and purple apples'),
('I hate red apples'),
('You like oranges');
您將不得不從PHP中的數組構建喜歡的字符串。以下我使用PDO
,但您可以輕鬆調整它以適應mysqli
。
$search_query = "green apples";
$keywords = explode(' ', $search_query);
$where = '1'; /* We use the 1 so we can prepend 'AND' w/o another case. */
foreach ($keywords as &$word) {
$where .= " AND LIKE ?";
$word = "%{$word}%";
}
unset($word);
$stmt = $PDO_Connection->prepare("SELECT `text` FROM Table A WHERE {$where}");
if ($stmt->execute([$keywords])){
while ($row = $stmt->fetch()){
echo $row['text'] . '<br />';
}
}
如果您是通過文本搜索,你可以做Full Text Search
由於類似的東西,但我怕我不明白我怎麼會使用MySQL的文本搜索來解決這個問題。 – Zedman
這比編寫搜索排名算法容易得多。 http://dev.mysql.com/doc/refman/5.6/en/fulltext-natural-language.html –