0

对 php 来说相当新,目前正在使用 MySQL 数据库作为翻译源进行多数组搜索词到词的翻译。我使用 1 个有 2 列的表。第一列是语言 1,第二列是语言 2。语言 2 是语言 1 的翻译。这个过程是我想搜索多个翻译形式语言 1 并显示翻译 2 的输出。比如说用户输入来自语言 1 的“word3 word2 word5 word4 word1”和语言 2 的输出应该与输入的顺序相同,例如“translation3 translation2 translation5 translation4 translation1”。但是在我的 sql 查询中使用 OR 将字符串拆分为数组后,结果会按数据库顺序显示。如果我不使用 OR,则不会显示结果。所以我要解决的问题是:

  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;
} 
?>
4

1 回答 1

0

您可以OR像以前一样使用查询从 SQL 中加载单词并将其保存为关联数组 - 但是在翻译它时,我建议您使用 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);
于 2019-03-17T07:37:57.733 回答