2010-03-21 95 views
0

我有一個文本字符串已被修改爲網頁安全的URL,即非字母數字的被轉換爲「_」。通配符PHP文本搜索

我想要做的是尋找原來的名字被改之前,這意味着我需要某種形式的通配符搜索即

我有什麼

test__mytest 

隨着通配符

test??mytest 

的〜應變克每升將與通配符搜索

test: mytest 

誰能告訴我如何在PHP中實現這一發現? 謝謝

回答

0

可能已經找到解決方案here 我會更新,如果我得到它的工作。

編輯:這是我的解決方案

$searchstring = "/".str_replace("_","(.?)", escape_string_for_regex($match))."/"; 

這將替換所有_與在那個地方的單個字符的搜索。 然後,我使用以下行來測試$ searchstring對測試字符串。

if (preg_match($searchstring, $matchtitle)) 
+0

escape_string_for_regex應該是'preg_quote($ match,'/')'。 (除非你在你自己的功能中使用它)。 – mcrumley 2010-03-22 02:12:19

0

另一種方法可能是編碼特殊字符,而不是將它們轉換爲下劃線。那麼你不需要通配符,你只需要搜索編碼值。

例如,測試%3A%20page

這也將阻止如果你試圖轉換以下兩成頁,你會遇到的問題:

測試:頁
測試頁

他們都會變成test_page,並且空間/時間的連續性將處於危險之中。可能不太可能,但仍然不受歡迎。

+0

不幸的是我無法控制編碼,所以我必須使用wilcards。不過謝謝 – Chris 2010-03-21 23:16:08