2017-03-14 129 views
0

我試過使用\/b[[:<:]],不知道爲什麼他們不工作。而%只有在字符串的最開始纔有效。PHP,如何查找單詞是否在我的字符串中?

在我的欄目表我有這樣的字符串:

Race car driver 
Driving Instructor 

在搜索框中,如果用戶鍵入'driv'(不區分大小寫),我想這兩個上面的字符串的出現。

//if a person arrives at this page other than doing a search then go to the main page 
if(!isset($_POST['search'])) { 
    header("Location:mainpage.php"); 
} 

$search_sql="SELECT * FROM category WHERE user_id = '$user_id' AND cat_name LIKE '[[:<:]]".$_POST['search']."%'"; 

$search_query=mysqli_query($con,$search_sql); 
if(mysqli_num_rows($search_query)!=0) { 
$search_rs=mysqli_fetch_assoc($search_query); 
} 

if(mysqli_num_rows($search_query)!=0) { 

    do { ?> 
    <p><?php echo $search_rs['cat_name']; ?></p> 

    etc... etc ... 
+1

'LIKE'不識別正則表達式。如果yu想要使用正則表達式,請使用[REGEXP](https://dev.mysql.com/doc/refman/5.7/en/regexp.html#operator_regexp) –

+0

用「%」包裝查詢。我的意思是把「%」放在查詢的開頭和結尾處 –

+0

@AbdullahMallik如果我這樣做,它會識別字符串中的任何單詞或單詞的部分。例如,'riv'會返回'賽車司機'和'駕駛教練'。它應該只是文字的開始。 – CHarris

回答

1

你可以這樣做:

".. cat_name LIKE '".$_POST['search']."%' or cat_name LIKE '% ".$_POST['search']."%'"; 

所以這是無論是第一個字或它在前面至少有一個空格。

相關問題