通过 mod_rewrite 在 URLS 中使用 - 并查询 Mysql 数据库
Using - in URLS via mod_rewrite and querying Mysql database
我有问题。我正在使用 mod_rewrite 重命名我的 URLS
一切正常,直到我重新格式化我的 URLS,以便 spaces 包含 - 而不是 %20。
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']);}
然后我在查询数据库时恢复正常,例如:
str_replace(' ', '-', $_GET['city'])
然而,这产生了一个问题,因为一些城市同时使用 space 和 -。 圣安德烈留尼汪岛.
最初我考虑 运行 原始 SQL 查询,如果返回 0 个结果,str_replacing spaces 与 - 在 运行 查询之前再次。然而,这只会在城市仅包含 - 和 0 space 时修复它,例如 Saint-andre.
$sql2 = "SELECT `name`, FROM `list` WHERE country = '$regionCode[0]' AND admin1 = '$regionCode[1]' AND admin2 = '$regionCode[2]' AND city = '$city' ORDER BY 'moddate'";
处理此问题的最佳方法是什么?我应该改用双破折号并以不同方式处理吗? EG Saint--andre-reunion-island或者有更好的方法吗?
谢谢
决定使用双破折号选项并创建一个函数。如果有更好的选择,我仍然欢迎任何其他建议:)
我在下面使用的代码。
// 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']);}
我有问题。我正在使用 mod_rewrite 重命名我的 URLS
一切正常,直到我重新格式化我的 URLS,以便 spaces 包含 - 而不是 %20。
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']);}
然后我在查询数据库时恢复正常,例如:
str_replace(' ', '-', $_GET['city'])
然而,这产生了一个问题,因为一些城市同时使用 space 和 -。 圣安德烈留尼汪岛.
最初我考虑 运行 原始 SQL 查询,如果返回 0 个结果,str_replacing spaces 与 - 在 运行 查询之前再次。然而,这只会在城市仅包含 - 和 0 space 时修复它,例如 Saint-andre.
$sql2 = "SELECT `name`, FROM `list` WHERE country = '$regionCode[0]' AND admin1 = '$regionCode[1]' AND admin2 = '$regionCode[2]' AND city = '$city' ORDER BY 'moddate'";
处理此问题的最佳方法是什么?我应该改用双破折号并以不同方式处理吗? EG Saint--andre-reunion-island或者有更好的方法吗?
谢谢
决定使用双破折号选项并创建一个函数。如果有更好的选择,我仍然欢迎任何其他建议:)
我在下面使用的代码。
// 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']);}