PHP MySQL множественный поиск слова с использованием массива для перевода слова в слово

0

Довольно новичок в php и в настоящее время делает поиск по множеству слов в словаре, используя базу данных MySQL как источник перевода. Я использую 1 таблицу, которая имеет 2 столбца. Первый столбец - это язык 1, а второй столбец - это язык 2. Язык 2 - это перевод языка 1. Процесс состоит в том, что я хочу выполнить поиск в множественном переводе с языка 1 и показывает вывод перевода 2. Например, пользовательский ввод "word3 word2 word5 word4 word1" из языка 1 и выходные данные языка 2 должны быть в том же порядке при вводе, как "translation3 translation2 translation5 translation4 translation1". Но после разбиения строки на массив проблема с помощью ИЛИ в моем sql запросе заставляет результат отображаться в порядке базы данных. Если я не использую ИЛИ, результат не будет отображаться. Итак, проблема, которую я хочу решить:

  1. Показывает результат перевода для того, какой пользовательский ввод
  2. Используя точное вводимое пользователем слово, чтобы найти перевод
  3. Покажите результат перевода с повторным вводимым словом, таким как word1 word1 word1 = translation1 translation1 translation1, если это возможно.

Пожалуйста, помогите, если у вас есть какое-либо решение, так как я не могу найти какое-либо решение в Интернете. Благодарю. Это мой код

<?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;
} 
?>
  • 0
    Перевод текста не так прост, как это. Грамматика отличается и некоторые языки добавить слова , прежде чем до слова, как . the Некоторые языки меняют порядок слов так, что это слово1 слово3 слово2.
  • 0
    этот переводчик не требует грамматики, он просто прямой переводчик
Показать ещё 1 комментарий
Теги:
arrays

1 ответ

0

Вы можете загрузить слова из 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);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню