对于php来说还很陌生,目前正在使用MySQL数据库作为翻译源来进行多数组搜索的词对词翻译器。我正在使用具有2列的1表。第一列是语言1,第二列是语言2。语言2是语言1的翻译。该过程是我想搜索多种翻译形式的语言1,并显示翻译2的输出。例如,假设用户输入语言1的“ word3 word2 word5 word4 word1”和语言2的输出应通过输入相同的顺序,例如“ translation3 translation2 translation5 translation4 translation1”。但是在将字符串拆分为数组后,通过在我的sql查询中使用OR来使问题按数据库顺序显示。如果im不使用OR,则不会显示结果。所以我要解决的问题是:
如果您有任何解决方案,请提供帮助,因为我似乎无法在互联网上找到任何解决方案。谢谢。这是我的代码
<?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 :(得分:0)
您可以像以前一样使用OR
查询从SQL中加载单词并保存为关联数组-但是在翻译时,我建议您使用带有language_1
和language_2
的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);