2012-04-21 79 views
1

搜索字符串我有以下情形:PHP,數據庫:保護與空白

我存儲用戶輸入可能包含空格。問題是,當我從數據庫中執行SELECTMySql)時,它找不到匹配項。如果我去掉空格,那麼對db的搜索就起作用了,但是如果我以這種方式存儲它們,那麼這些字符串都是亂七八糟的。

如何正確存儲數據庫中的字符串(帶空格)AND正確做SELECT將查找那些存儲的字符串?

感謝您的幫助。

UPDATE:

這裏是我與現在的工作是什麼:

 
$filename = "This is a string with white space"; 
//being stored in the db like this 

$trim_string = preg_replace("/\s+/", "", $filename); 
//search db as Thisisastringwithwhitespace 

仍然沒有找到匹配關係嗎?

+3

存儲未經編輯和搜索'trim()''d版本? – Blake 2012-04-21 16:36:41

+0

聰明! :P另一種選擇是使用正則表達式。 – Halcyon 2012-04-21 16:42:19

+0

空白,你的意思是尾隨空格嗎?請提供例子。 – Ami 2012-04-21 16:43:39

回答

0

如果用戶知道整個字符串,我會在Blake中提出在Mysql查詢中使用TRIM()的建議,如果您想進行部分搜索,並且想要快速,我會創建一個帶有單詞的輔助表而另一個用於位置出現在字符串,像這樣:

Word(id, string) 
WordInString(id, source_string_id, word_id, position) 

搜索將在2個步驟:

1. get the words ids 
2. get from WordInString the top list with greater number of Words hits, and show the options to the end user. 

希望它能幫助!