2016-09-16 99 views
0

我遇到了問題。我正在使用mod_rewrite重命名我的URL使用 - 在URL中通過mod_rewrite和查詢Mysql數據庫

一切工作正常,直到我重新格式化我的URL以便空格包含 - 而不是%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']) 

然而,這是一些城市同時使用創造了一個問題一個空間和一個 - 。 聖安德烈留尼汪島

最初我想過如何運行原始SQL查詢,如果返回0結果,請在再次運行查詢之前使用str_replacing空格。但是,如果城市僅包含 - 和0空間,例如聖安德烈,這隻會修復它。

$sql2 = "SELECT `name`, FROM `list` WHERE country = '$regionCode[0]' AND admin1 = '$regionCode[1]' AND admin2 = '$regionCode[2]' AND city = '$city' ORDER BY 'moddate'"; 

什麼是最好的處理方法?我應該使用雙破折號來處理它們嗎? EG 聖安德烈團聚島還是有更好的辦法嗎?

謝謝

+1

通常,在網址中包含人類可讀的slu will的網站也會*包含整數ID。在這種風格下,你完全忽略了服務器端的slu and,只是基於id進行查詢;這可以解決任何有重複城市名稱的問題。 –

+0

謝謝薩姆,是的,這是另一種選擇,我希望避免使用ID字段 –

回答

0

決定與雙破折號選項,並創建一個函數。我仍然歡迎任何其他建議,如果有更好的選擇:)

我在下面使用的代碼。

// 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']);}