首先,让我解释我将如何处理这段代码。我有一个数据库和一个用户界面来搜索其中的值。用户可能会输入多个关键字。所以我需要检查数组中是否存在数组中的所有值。检查字符串是否包含数组的所有值
举例来说,如果他们将键入“青苹果”,我有这样的一个字符串值“这绿色杂交松苹果是严重”,我应该显示该搜索结果。在这个帐户上,我想出了一点,我需要找到一种方法来检查字符串值是否包含数组中的所有值。
万分感谢
首先,让我解释我将如何处理这段代码。我有一个数据库和一个用户界面来搜索其中的值。用户可能会输入多个关键字。所以我需要检查数组中是否存在数组中的所有值。检查字符串是否包含数组的所有值
举例来说,如果他们将键入“青苹果”,我有这样的一个字符串值“这绿色杂交松苹果是严重”,我应该显示该搜索结果。在这个帐户上,我想出了一点,我需要找到一种方法来检查字符串值是否包含数组中的所有值。
万分感谢
我猜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 –