【问题标题】:PHP MySQL multiple search word using array for word to word translationPHP MySQL使用数组进行单词到单词翻译的多个搜索词
【发布时间】:2019-03-17 07:18:23
【问题描述】:

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

【问题讨论】:

  • 翻译文本并不那么简单。语法不同,有些语言在单词之前添加单词,例如the。有些语言会更改词序,使其成为 word1 word3 word2。
  • 这个翻译器不需要语法,它只是一个直接翻译器
  • @Bezman 我的帖子对您​​有帮助吗?你还有其他限制吗?

标签: php mysql arrays


【解决方案1】:

您可以像以前一样使用 OR 查询从 SQL 中加载单词并保存为关联数组 - 但是在翻译它时,我建议您使用 2 个带有 language_1language_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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多