通过 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&region=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']);}