Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z adresem po zamianie polskich znaków w URL za pomocą str_replace
Ewelka
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 19.08.2013

Ostrzeżenie: (0%)
-----


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... (IMG:style_emoticons/default/sciana.gif) Z góry dziękuję za pomoc (IMG:style_emoticons/default/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']);

Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




zapisuj w bazie wartosc bez polskich liter
Go to the top of the page
+Quote Post
Ewelka
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 19.08.2013

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
markonix
post
Post #5





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.09.2025 - 08:26