如何在字符串中的逗号(,)之前查找单词

时间:2014-03-28 01:03:04

标签: php string

我目前正在与其他人一起开展语言项目,我正在使用一个语言的数据库,但我们也有翻译,最好的方法是将这些单词包含在一列中。所以现在我们有(语言)(英语)(德语)(荷兰语)。问题是有些单词可以用多个单词翻译,所以对于英语,你会得到如下的翻译:

好,健康

我的问题是,我想避免为一个单词的一个单词的更多不同翻译创建一个新的(英语2)专栏,而不是将它们全部放在一个页面,但我怎么能确保如果人们寻找的东西,我也可以让代码区分逗号之前和之后的单词?因此,如果你寻找“健康”,你可以找到主要的词,而不仅仅是你输入'好,健康',没有人会做。我对PHP有一定的了解,但是使用字符串对我来说非常困难,我仍然不知道怎么做。

3 个答案:

答案 0 :(得分:0)

我不知道你在哪里存储这些数据,但我会假设一个MySQL数据库或你有类似控制权的东西。

你真的应该简单地使用两个表,一个用于存储单词和与之关联的ID,另一个表用于存储这些单词的翻译。

words
   ID     INT
   Word   VARCHAR(32)

translations
  ID            INT
  Lang          ENUM('ENGLISH', 'GERMAN', 'FRENCH')
  Translation   VARCHAR(32)

在PHP中,您可以进行如下查询:

SELECT `Word`, `Translation`
FROM `words`
LEFT JOIN `translations` ON (`translations`.`ID` = `words`.`ID` AND `Lang`='FRENCH')
WHERE `Word` = 'Funky'

此查询将返回单词和翻译(如果可用),如果没有可用的翻译,则返回NULL。

答案 1 :(得分:0)

拥有像这样的数据库结构不会很好:

  WORD          ENGLISH               GERMAN                  DUTCH
-----------------------------------------------------------------------------
well            good           <any Dutch/German translation or can be null>
well            healthy        <any Dutch/German translation or can be null>

然后,当您想查询well的翻译时,您可以

SELECT word, GROUP_CONCAT(english) as "English Translations" FROM myTable WHERE word='well'

然后它将导致:

  word                  English Translations
----------------------------------------------
well                    good,healthy

答案 2 :(得分:0)

我找到了解决方案!感谢Aziz,我可以在他提到的问题中找到函数FIND_IN_SET,这样我通过让MySQL查找逗号分隔的值来解决问题。