2015-11-20 82 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