【发布时间】:2015-11-20 04:05:14
【问题描述】:
我正在从数据库中检索菜单,其中一些菜单的名称中有一个撇号 - ' -。 在我的代码的一部分中,我必须将数据库中的名称与 url 进行比较,但是当 url 有撇号时它会失败。
例如:
当我从数据库中得到名称时,我得到它的原样: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 中尝试了所有可能的组合,但不是这样,而是这个 RewriteRule 不允许撇号,我也在我的正则表达式中尝试了 ([0-9a-zA-Z\ ']+) 和 ([0-9a-zA-Z\ \']+) 但无济于事。
【问题讨论】:
-
你试过这个正则表达式
RewriteRule ^explore/([^/]+) -
对不起,我睡着了,用这个正则表达式它显示我喜欢这个 foo\'s
-
不过没关系,我做个str_replace,就够了
标签: php regex .htaccess mod-rewrite