2015-11-20 48 views
0

我正在從數據庫中檢索菜單,其中一些有一個撇號 - ' - 在他們的名字。 在我的代碼的一部分,我必須將數據庫中的名稱與url進行比較,但當url有撇號時會失敗。如何在htaccess RewriteRule正則表達式中允許撇號?

例如:

當我從數據庫獲取的名字,我得到它,因爲它是:foo's

但是從網址,即使網址是web.com?menu=foo's當我這樣做:

$menu = urldecode($_GET['menu']); 

我只得到foo

這是我的htaccess重寫

RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

RewriteRule ^explore/([0-9a-zA-Z\ ]+) renderpage.php?menu=$1 [L] 

我試着在我的PHP所有可能的組合,這並不是說,正是這種重寫規則不允許撇號,我還在我的正則表達式和([0-9a-zA-Z\ \']+)但無濟於事試圖([0-9a-zA-Z\ ']+)

+0

你只是嘗試這個表達式'重寫規則^探索/([^ /] +)' –

+0

對不起,我睡着了,這正則表明我喜歡這個foo的 – Cr1xus

+0

,但它很好,我會做一個str_replace,它已經足夠好了 – Cr1xus

回答

0

我認爲這個問題是撇號的位置試試這個:

([0-9a-zA-Z'\]+) 

([0-9a-zA-Z']+) 
+0

這也可以,但它顯示的是這樣的:foo \'s。但足夠好我會做一個str_replace – Cr1xus

+0

這是因爲我不得不允許空間,但我必須把它放在空間之前 – Cr1xus