私は問題があります。 mod_rewriteを使用してURLの名前を変更していますURLをmod_rewrite経由で使用し、MySQLデータベースを照会
%20の代わりにスペースを含めるようにURLを再フォーマットするまで、すべて正常に動作しています。
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'])
しかし、これは問題を作成しましたスペースAND a - 。 サン・アンドレ・レユニオン島。
最初は元のSQLクエリの実行について考えましたが、0の結果が返された場合は、str_replacingのスペースが - でクエリを再実行する前に。しかし、これは市が含まれている場合にのみ修正されます - 0スペースたとえば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 サン・アンドレ・レユニオン島またはもっと良い方法がありますか?
ありがとう
しばしば、URLに人間が判読できるスラッグを含むサイトにも整数IDが含まれます。そのスタイルでは、サーバーサイドのスラッグを完全に無視し、idに基づいてクエリを実行します。重複した都市名の問題を回避することができます。 –
サムのおかげで、別の選択肢でしたが、私はIDフィールドの使用を避けることを望んでいました –