Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z adresem po zamianie polskich znaków w URL za pomocą str_replace
Forum PHP.pl > Forum > PHP
Ewelka
Mam mały problem z odczytem adresu URL w którym usunęłam polskie znaki za pomocą funkcji str_replace, zamieniając polskie znaki
na standardowe a-z, A-Z i zamieniając spację " " na myślnik "-". W efekcie linki które do tej pory wyglądały mniej-więcej tak:
"http://www.strona.pl/spódniczka" teraz są bez polskich znaków: "http://www.strona.pl/spodniczka"

Z drugiej strony zrobiłam zamianę myślnika "-" spowrotem na spację " ", lecz mam problem z tym, że z drugiej
strony adres "/spodniczka" nie zostaje znaleziony, ponieważ poprawnie brzmi adres z polskimi znakami - "/spódniczka".


Jak Wy rozwiązujecie problem tego typu? Siedzę nad tym już kilka godzin i już nie mam pomysłów... sciana.gif Z góry dziękuję za pomoc wink.gif


Tutaj zamiana polskich znaków na standardowe a-z, A-Z:
  1. function nice_url($a)
  2. {
  3. $url = $a;
  4. $cenzura = array(" ", "ą", "ć", "ł", "ó", "ś", "ę", "ń", "ż", "ź", "Ą", "Ć", "Ł", "Ó", "Ś", "Ę", "Ń", "Ż", "Ź");
  5. $zamiana = array("-", "a", "c", "l", "o", "s", "e", "n", "z", "z", "A", "C", "L", "O", "S", "E", "N", "Z", "Z");
  6. $url = str_replace($cenzura, $zamiana, $url);
  7. echo $url;
  8. }


A tutaj fragment kodu z podstrony:
  1. function clean($text)
  2. {
  3. return htmlentities(strip_tags(stripslashes($text)), ENT_COMPAT, "UTF-8");
  4. }
  5.  
  6. $url = clean($_REQUEST['url']);
  7. $url = str_replace("-", " ", $url);
  8.  
  9. $query = "select A.ID, A.url, from elements A where A.url='".mysql_real_escape_string($url)."'";
  10. $executequery = $conn->execute($query);
  11. $ID = intval($executequery->fields['ID']);

nospor
zapisuj w bazie wartosc bez polskich liter
Ewelka
Czyli musiałabym zapisywać w bazie wersję z polskimi znakami i osobno w kolumnie zapisać wersje bez polskich znaków?

Czy nie ma możliwości zrobienia tego "w locie" - bez zapisywania osobno do bazy danych?
nospor
No a jak niby baza ma wiedziec, ze dane o ma zamienic na ó i to porownywac? I ze akurat ma zamienic pierwsze o a nie drugie o z wyrazu?

Od biedy dodawaj do linkow ID i problem z glowy
markonix
W bazie trzymasz tytuł wyświetlany i URL, które mogą być takie same albo zbliżone.
Np.
url: jaka-spodniczka
title: Jaka spódniczka?

Przy pobieraniu wpisu szukasz via url, wyświetlasz już title.
Musisz pamiętać aby nadać indeks unikalny na url aby pod jednym nie było kilku wpisów.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.