1 回答

TA貢獻1785條經(jīng)驗 獲得超4個贊
我整理了一些 PHP,它們將嘗試處理整個輸入字符串(例如How are you)。它將輸入字符串轉(zhuǎn)換為單詞數(shù)組,然后使用該數(shù)組為IN表達式 ( How are you=> 'how','are','you') 生成適當(dāng)?shù)淖址?,然后將其添加到查詢中。我已將查詢稍微修改為小寫所有?nèi)容(以便how可以匹配How或HOW或...)。
在演示中,我模擬了一個結(jié)果集,您可以使用$result->fetch_all(). 代碼循環(huán)遍歷單詞列表,嘗試匹配結(jié)果數(shù)組中的每個單詞,如果找到,則嘗試匹配大小寫(它處理大寫、大寫和小寫)。結(jié)果集中未找到的單詞將通過未翻譯的方式傳遞。
$translateWord = 'How are you';
$words = explode(' ', $translateWord);
$list = implode(',', array_map(function ($word) { return "'" . strtolower(trim($word)) . "'"; }, $words));
$query = "SELECT LOWER(English) AS English, LOWER(Translation) AS Translation
FROM $username
WHERE LOWER(English) IN ($list)";
// query table
// $result = $connection->query($query);
// $rows = $result->fetch_all();
// simulated result
$rows = array(array('English' => 'how', 'Translation' => 'como'),
array('English' => 'are', 'Translation' => 'son'),
array('English' => 'you', 'Translation' => 'tu'));
$translation = array();
foreach ($words as $word) {
if (($key = array_search(strtolower($word), array_column($rows, 'English'))) !== false) {
// match case of result
if (strtoupper($word) == $word) {
$translation[] = strtoupper($rows[$key]['Translation']);
}
elseif (ucfirst($word) == $word) {
$translation[] = ucfirst($rows[$key]['Translation']);
}
else {
$translation[] = $rows[$key]['Translation'];
}
}
else {
// no match, leave alone
$translation[] = $word;
}
}
echo $translateWord . " => " . implode(' ', $translation);
輸出:
How are you => Como son tu
- 1 回答
- 0 關(guān)注
- 107 瀏覽
添加回答
舉報