- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在过滤系统中编码&符号时遇到问题。
例如,如果第一个过滤器用于品牌且品牌名称为“海飞丝”,则 url 应类似于 website/category/brand-head+%26+shoulders,但仅当 url 为 website/category/时过滤器才有效brand-head-%252526+shoulders.
如果选择了另一个过滤器,例如高度,如果 url 是 website/category/brand-head-%25252526+shoulders 等品牌过滤器有效,我必须在百分号前再添加 25。
这是品牌过滤代码
if($brand == false){
$data['brands'] = array();
$brands = $attributes->getBrands($av_list, $_GET['c']);
$brandTotalCnt = 0;
if(!empty($brands)){
foreach ($brands as &$brand) {
if($av_list){
$cur_av_list = $av_list . $brand['brand'];
$cur_av_uri = $_GET['av'] . $brand['brand'];
} else {
$cur_av_list = $brand['brand'];
$cur_av_uri = $brand['brand'];
}
$tmp_uri = explode('/', $ln_uri);
$tmp_uri_array = $attributes->remove_items_by_value($tmp_uri, 'brand');
$new_uri = implode('/', $tmp_uri_array);
$brandTotalCnt += $brand['num'];
$data['brands'][] = array(
'brand' => ucwords(strtolower($brand['brand'])),
'num' => $brand['num'],
'href' => $url->link('/c/'.$_GET['c'], '/brand-'. urlencode(strtolower($brand['brand'].'1')). $new_uri)
);
}
}
$data['brandTotalCnt'] = $brandTotalCnt;
}
每个过滤器的 URL 解码
if(isset($brand)){
$sql .= " AND brand = '".urldecode($brand)."'";
}
if(isset($gramaj)){
$height= $_GET['height'];
$sql .= " AND height= '".urldecode($height)."'";
}
这是来 self 的 htaccess
# rewrite /category/brand-mybrand/country-mycountry/offer-yes/new-yes
# to /index.php/brand-mybrand/country-mycountry/offer-yes/new-yes?c=category
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^c/([^/]+)/([^-]+.+)/?$ /index.php/$2?c=$1 [L,QSA]
# rewrite /index.php/brand-mybrand/country-mycountry/offer-yes/new-yes?c=category
# converts any /name-val/ to query parameter name=val in every rewrite
# stopping when there is no part left after /index.php
RewriteRule ^(index\.php)/([^-]+)-([^/]+)(/.*)?$ /$1$4?$2=$3 [L,QSA]
最佳答案
PHP 在启动期间填充 $_GET[]
时自动解析查询字符串和 URL 解码值。
生成 URL 时 urlencode()
值是正确的,但您不能 urldecode()
从 $_GET[]
.
更新:
正如 Apache documentation 中所解释的那样:
mod_rewrite
has to unescape URLs before mapping them, so backreferences are unescaped at the time they are applied
如果您的重写规则采用路径的一部分并将其放入查询字符串中,标志 [B]
(转义反向引用)指示引擎使用未转义的 URL 来匹配规则。
您的问题有两种解决方案:
-
),您就安全了;(高级解决方案):将 [B]
标志添加到受影响的重写规则中:
RewriteRule ^c/([^/]+)/([^-]+.+)/?$ /index.php/$2?c=$1 [L,QSA,B]
关于php - urlencode 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30349868/
我正在编写一个 Web 应用程序并学习如何对 html 链接进行 urlencode... 这里的所有 urlencode 问题(参见下面的标签)都是“如何...?”问题。 我的问题不是“如何?”但“
Dart 中有进行 urlencoding 的函数吗?我正在使用 XMLHttpRequest 对象进行 AJAX 调用,并且需要对 url 进行 url 编码。 我在 dartlang.org 上进
我们有一些非常基本的 mod_rewrite 规则: RewriteRule ^something.swf$ http://www.newdomain.com/something.swf [R=302
Server.UrlEncode 和 HttpUtility.UrlEncode 之间有区别吗? 最佳答案 我之前对这些方法感到非常头疼,我建议您避免 UrlEncode 的任何变体,而是使用 Uri
在PHP中: php -r "echo urlencode('["IM"]'); " 结果是%5BIM%5D 但是在java中 String text = URLEncoder.encode('["
From Python 的 urllib.urlencode 的 java 等价物是什么? 喜欢 >>> urllib.urlencode({'abc':'d f', 'def': '-!2'}) '
我发现了一个奇怪的问题,即 urlencoding 行为不一致。 更新 Spring MVC 4.3 和 5.1 版本之间存在差异: // FAIL in MVC 4.x @Test public v
express 框架带有 express 函数 express.json() 和 express.urlencoded()。 我们有 body-parser 库,它似乎具有相同的功能。 我的问题是,b
所以我正在处理的站点有一个过滤系统,它通过一个查询字符串传递一个键和值系统来运行。 整个站点很快就会进行重构,我正在维护现有站点,因此在我们讨论实现这一点的正确方法之前,我只需要更改分隔符的想法。 现
Dart中有进行urlencoding的功能吗?我正在使用XMLHttpRequest对象进行AJAX调用,我需要对该URL进行URL编码。 我在dartlang.org上进行了搜索,但没有得到任何结
我正在创建一个涉及将中文字符作为 url 参数发送的 php 应用程序。 我必须发送如下查询: http://xyz.com/?q=New 但是 xyz.com 的脚本不会自动对中文字符进行编码。因此
全部, 有个文字区说 如果用户给出输入, here is my name and my mail id is "a@x.com" 当数据在服务器端发布时,数据被接收为 这是我的名字,我的邮件
我想使用java的URLEncoder class编码我的 url 字符串。但是,默认情况下它将空格转换为“+”(加号)。我希望它改用“-”(类似于本网站对其网址进行编码的方式)。 我想知道最好的方法
我想对以下内部模板进行 url 编码 {{address.street}} {{address.city}} {address.state}} 无论如何在模板端执行此操作并将其放入href(我不希望将
我想在控制台应用程序VB.NET,VS 2010 Beta 2中使用HttpUtility.UrlEncode。 System.Web.HttpUtility.UrlEncode(item) 错误消息
我有一个服务堆栈应用程序,一个测试服务收到一个简单的请求,但是我发现收到的请求的值与原始请求不匹配。 我发:http://localhost/testapp/test?value=%22test%20
有没有办法对路径中的目录分隔符/进行 urlencode ? 喜欢 urlencode('/this/is/my/file right here.jpg'); 最佳答案 你可以使用 explode将您
是否可以在不转换 # 或 % 的情况下运行 urlencode 函数? 最佳答案 你能不能只做: $str = urlencode($str); $str = str_replace("%23", "
我正在尝试使用可选参数 shown in the docs 对 Django 1.3 中包含斜杠的字符串进行 URL 编码: {{ someString|urlencode:"" }} 但是,斜杠不会
我无法快速找到谷歌答案,而且我面前没有帮助(长话短说),所以,我的问题是:是否有一种简单的方法可以在 MS Visual 中对字符串进行 URL 编码FoxPro 8 最佳答案 这是一个可以满足您需要
我是一名优秀的程序员,十分优秀!