Довольно новичок в php и в настоящее время делает поиск по множеству слов в словаре, используя базу данных MySQL как источник перевода. Я использую 1 таблицу, которая имеет 2 столбца. Первый столбец - это язык 1, а второй столбец - это язык 2. Язык 2 - это перевод языка 1. Процесс состоит в том, что я хочу выполнить поиск в множественном переводе с языка 1 и показывает вывод перевода 2. Например, пользовательский ввод "word3 word2 word5 word4 word1" из языка 1 и выходные данные языка 2 должны быть в том же порядке при вводе, как "translation3 translation2 translation5 translation4 translation1". Но после разбиения строки на массив проблема с помощью ИЛИ в моем sql запросе заставляет результат отображаться в порядке базы данных. Если я не использую ИЛИ, результат не будет отображаться. Итак, проблема, которую я хочу решить:
Пожалуйста, помогите, если у вас есть какое-либо решение, так как я не могу найти какое-либо решение в Интернете. Благодарю. Это мой код
<?php
if(isset($_POST['transl']))
{
$keyword = mysqli_real_escape_string($con, $_POST['input_text']);
$keys = explode(" ",$keyword);
$sql = "SELECT * FROM language WHERE language_1 = '".$keyword."' " ;
foreach($keys as $k){
$sql .= " OR language_1 = '".$k."' ";
}
$result = mysqli_query($con, $sql);
if($result){
while($row = mysqli_fetch_assoc($result)){
echo $row['language_2'];
}
}
echo $sql;
}
?>
Вы можете загрузить слова из SQL с помощью запроса OR
как вы это сделали, и сохранить как ассоциативный массив - но при переводе я рекомендую использовать 2 массива с language_1
и language_2
а затем использовать str-replace для замены слов.
Учтите следующее:
$dic = array();
while($row = mysqli_fetch_assoc($result)){
$dic[$row['language_1']] = $row['language_2'];
}
Теперь вы можете взять ключи (language_1) и значения (language_2) и использовать их как:
$newSentence = str_replace(array_keys($dic), array_values($dic), $input);
the
Некоторые языки меняют порядок слов так, что это слово1 слово3 слово2.