如何在htaccess RewriteRule正则表达式中允许撇号?

时间:2015-11-20 04:05:14

标签: php regex .htaccess mod-rewrite

我从数据库中检索菜单,其中一些菜单有撇号 - ' - 以他们的名字命名。 在我的代码的一部分中,我必须将数据库中的名称与url进行比较,但是当url有撇号时它会失败。

例如:

当我从db获取名称时,我得到它:foo's

但是来自网址,即使我这样做时网址为web.com?menu=foo's

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

我只获得foo

这是我的htaccess Rewrite

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

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

我已经在我的php中尝试了所有可能的组合,不是这样,这个RewriteRule不允许撇号,我也试过([0-9a-zA-Z\ ']+)在我的正则表达式和([0-9a-zA-Z\ \']+)但无济于事。

1 个答案:

答案 0 :(得分:0)

我认为问题出在撇号的位置试试这个:

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

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