如何在PHP中找到一个字符串中的单词?

时间:2014-01-02 13:54:46

标签: php

我的数据库表中有以下两个列。

name = "Alex"
skills= "medical,electronics,books,technology"

现在我的问题是要在上述技能领域中搜索一个单词。 如果用户在搜索框中键入内容,我的查询将在数据库表(技能字段)中搜索一个完全以逗号分隔的单词,而不是单词的一部分。 例如,如果用户键入medi,则查询应返回false,但如果他键入医疗或书籍,则查询应返回true,因为医疗或书籍都存在。

所以任何人都可以告诉我如何在PHP中完成它。 如果我犯了错误,也请原谅我,因为我的英语不是那么强。

感谢。

4 个答案:

答案 0 :(得分:2)

您有一个单词列表和一个要搜索的单词。

in_array在这里会很理想。

$has_skill = in_array(strtolower($search),explode(",",strtolower($skills)));

请注意,我已将所有字符串转换为小写以方便搜索。

答案 1 :(得分:1)

在php中,您可以使用stripos函数http://php.net/stripos

即。 :

if (stripos($skills,',books,')!==false || stripos($skills,'books,')===0) echo $name have the skill books;

或直接在SQL下使用类似'%,myword,%'

即。 :

select name from table where skills like '%,books,%' or skills like 'books,%';

编辑。添加了技能第一的案例

答案 2 :(得分:1)

$is_in_string = in_array($name,explode(",",$skills));

注意:每次有大量用户输入字母时都会使用explode(",",$skills)

答案 3 :(得分:0)

$keywords = preg_split("/[\s,]+/", "medical,electronics,books,technology");
$search='electronics';
$o=in_array($search,$keywords);
if($o==1){
   echo 'yes founded '.$search.'<br/>'; 
}
   else{
echo 'sorry '.$search.'<br/>';       
   }
print_r($keywords);