Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Mod_rewrite i polskie znaki
Forum PHP.pl > Forum > Przedszkole
RSX
Mam otóż taki problem korzystam z forum punbb które udało mi się przerobić na przyjazne linki ale niestety z jedn± rzecz± nie radzę sobie otóż:
Mam taki adres - http://adres.pl/t20-znalazłe¶-bł±d-zgło¶.html
jak wiadomo przegl±darki nie najlepiej lubi± polskie ogonki więc adres wygl±da tak:
http://adres.pl/t20-znalaz%C5%82e%C5%9B-b%...%82o%C5%9B.html
jak sobie z tym poradzić dodam, że mam co¶ takiego:

  1. <?php
  2. function makeurl($type, $id, $name) {
  3. # Type must be "f" for forum, "t" for topic or "p" for post
  4. # ID is the id of the content wanted
  5. # Name is the title of the category or topic
  6.  
  7.  
  8. $words = explode(" ", $name);
  9. $url;
  10. foreach ($words as $word) {
  11. if(strlen($word) > 3)
  12. $url .= '-' . $word;
  13. }
  14. $url = strtr($url,'/ABCDEFGHIJKLMNOPRSTWZXY:','-abcdefghijklmnoprstwzxy-');
  15. $url = urlencode($type . $id . $url . ".html");
  16.  
  17. return $url;
  18. }
  19. ?>


Co dodać aby polskie znaki były pokazywane bez ogonków (strona jest w kodowaniu utf-8) oraz co zrobić żeby nawiasy które wyst±pi± w nazwie były pomijane.

Pozdrawiam.
Dzięki z góry za pomoc.
tommy4
poczytaj o str_replace.

Możesz np. zrobić tak:

  1. <?php
  2. $text = "ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ±±±±±±±±±±±±ˇ)))))))(((((";
  3. $search = array('ˇ', '±', '(', ')');
  4. $replace = array('A', 'a', '', '');
  5. $text = str_replace($search, $replace, $text);
  6. ?>

i zmienna $text powinna potem nie miec nawiasów oraz miec zamienione ˇ na A i ± na a.

Jest jeszcze funkcja str_ireplace (lub stri_replace, nie pamietam dokladnie), która nie jest case-sensitive. ALe nie wiem czy działa to na polskie znaki.
RSX
Cytat(tommy4 @ 29.05.2007, 17:06:36 ) *
poczytaj o str_replace.

Możesz np. zrobić tak:

  1. <?php
  2. $text = "ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ±±±±±±±±±±±±ˇ)))))))(((((";
  3. $search = array('ˇ', '±', '(', ')');
  4. $replace = array('A', 'a', '', '');
  5. $text = str_replace($search, $replace, $text);
  6. ?>

i zmienna $text powinna potem nie miec nawiasów oraz miec zamienione ˇ na A i ± na a.

Jest jeszcze funkcja str_ireplace (lub stri_replace, nie pamietam dokladnie), która nie jest case-sensitive. ALe nie wiem czy działa to na polskie znaki.



Ale ja muszę przerobić taki kod a nie dawać jaki¶ inny więc nie wiem po co mi dajesz całkowicie inny kod który nie ma nic wspólnego z moim i moim problemem.

  1. <?php
  2. function makeurl($type, $id, $name) {
  3. # Type must be "f" for forum, "t" for topic or "p" for post
  4. # ID is the id of the content wanted
  5. # Name is the title of the category or topic
  6.  
  7.  
  8. $words = explode(" ", $name);
  9. $url;
  10. foreach ($words as $word) {
  11. if(strlen($word) > 3)
  12. $url .= '-' . $word;
  13. }
  14. $url = strtr($url,'/ABCDEFGHIJKLMNOPRSTWZXY:','-abcdefghijklmnoprstwzxy-');
  15. $url = urlencode($type . $id . $url . ".html");
  16.  
  17. return $url;
  18. }
  19. ?>


- Prosił bym o podpowiedzenie co w powyższym kodzie przerobić ...
scorpion_1982
kolega wyżej dobrze ci podpowiedział, być może do tego czasu już znalazłe¶ odpowiedz ale je¶li nie to ci to wytłumacze.

nie da się wpisać polskich znaków do adresu url, ponieważ s± one zamieniane na odpowiedni im znak.

Kolega podpowiedział by¶ przerobił polskie znaki
piszesz sobie funkcje i poprostu wywołujesz co¶ przez ni±

czyli jesli masz w adresie powiedzmy
zgło¶-bł±d to zamieni ci go na zglos-blad.
a je¶li szukasz kogo¶ kto ci napisze gotowy kod to niestety nie wiem czy tu tak± osobe znajdziesz, bo je¶li uczysz się lub piszesz w php, trzeba umieć posłużyć się googlami lub chociaż by wyszukiwark± na tym forum, za pomoc± str_replace załatwisz sprawe i powywalasz polskie ogonki i po sprawie, kodu zbytnio nie musisz zmieniać,
Pozdrawiam
dadexix
Kod
    $url = strtr($url,'/ABCDEFGHIJKLMNOPRSTWZXY:','-abcdefghijklmnoprstwzxy-');
    $url = urlencode($type . $id . $url . ".html");


zmień na

str-ireplace



Kod
$znaki = array("±","ć","¶","ę",Ľ","ó");
$znaki2 = array("a","c","s","e","c","z","o");
$url = str_ireplace($znaki,$znaki2,$url);
$url = strtr($url,'/ABCDEFGHIJKLMNOPRSTWZXY:','-abcdefghijklmnoprstwzxy-');
$url = urlencode($type . $id . $url . ".html");


i ów cała filozofia:D
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.