我有问题。我正在使用mod_rewrite重命名我的URL
一切正常,直到我重新格式化我的URL以便空格包含 - 而不是%20。
let Parent = (function() {
class Parent {
constructor() {
console.log('P constructor');
initParent.call(this);
}
}
function initParent() {
console.log("initParent");
this.parentProp = 'parent';
}
return Parent;
})();
let Child = (function() {
class Child extends Parent {
constructor() {
console.log('C constructor');
super();
initChild.call(this);
}
test() {
console.log(this.childProp + ' ' + this.parentProp);
}
}
function initChild() {
console.log("initChild");
this.childProp = 'child';
}
return Child;
})();
let child = new Child();
child.test();
目前我正在这样做
site.com/page.php?country=abc®ion=d e f&city=gh i
site.com/abc/d-e-f/gh-i/
然后我在查询数据库时转换回正常状态,例如:
if (isset($_GET['country'])) {$country = str_replace('-', ' ', $_GET['country']);}
if (isset($_GET['city'])) {$city = str_replace('-', ' ', $_GET['city']);}
if (isset($_GET['region'])) {$region = str_replace('-', ' ', $_GET['region']);}
然而,这造成了一个问题,因为一些城市同时使用空格和 - 。 圣安德烈团圆岛。
最初我考虑过运行原始SQL查询,如果返回0结果,则在再次运行查询之前str_repla空格 - 。但是,如果城市仅包含 - 并且0空格,例如圣安德烈,这只能解决此问题。
str_replace(' ', '-', $_GET['city'])
处理此问题的最佳方法是什么?我应该使用双破折号并以不同方式处理吗? EG Saint-andre-reunion-island 还是有更好的方法吗?
由于
答案 0 :(得分:1)
决定使用双破折号选项并创建一个功能。如果有更好的选择,我仍然欢迎任何其他建议:)
我在下面使用的代码。
// URL Database conversion class
function QueryConversion($url) {
$url = str_replace('--', '*', $url);
$url = str_replace('-', ' ', $url);
$url = str_replace('*', '-', $url);
return $url;
}
// URL conversion class
function URLconversion($url) {
$url = str_replace('-', '--', $url);
$url = str_replace(' ', '-', $url);
return $url;
}
if (isset($_GET['country'])) {$country = QueryConversion($_GET['country']);}
if (isset($_GET['region'])) {$region = QueryConversion($_GET['region']);}
if (isset($_GET['city'])) {$city = QueryConversion($_GET['city']);}