Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Polskie znaki w URL lecz w <title> już nie.
Forum PHP.pl > Forum > Przedszkole
darney
Mam pytanie. Co według was może być przyczyną błędnego wyświetlania polskich znaków w TITLE strony. Chodzi o kodowanie utf-8.

W moim seo URL słowo "Bankowość" wyświetlane jest poprawnie natomiast przechwycone z URL do tytułu strony wyświetla się "Bankowo%C5%9B%C4%87"
Proszę o pomoc w nakierowaniu mojego myślenia w kierunku przechwytywania poprawnie polskich znaków z URL do TITLE.

gac3k
urlencode oraz urldecode
darney
Ogólnie część liter zamieniłem następującą funkcją

function croURLtoCHAR($text)
{
$url=array(
"%C5%A0","%C5%A1",
"%C4%90","%C4%91",
"%C4%8C","%C4%8D",
"%C4%86","%C4%87",
"%C5%8B","%C5%9B",
"%C5%BD","%C5%BE"
);
$char=array(
"Š","š",
"Đ","đ",
"Č","č",
"Ć","ć",
"Ś","ś",
"Ž","ž"
);

return str_replace($url,$char,$text);
}

Możecie mi podpowiedzieć bo na manualu coś polskich znaków pozostałych nie moge znaleść jakie odpowiedniki ma litera ż ź ó ł ą ę ń albo pod jakim hasłem szukać tego typu kodowania "%C5%BD","%C5%BE" ileś bitowe . Dzięki z góry smile.gif
gac3k
czy moich postów nie widać? Czemu nie przerzucisz tego po prostu przez urldecode ? nie działa?
darney
faktycznie działa. Dzięki : )

Mógł byś podpowiedzieć mi jak najlepiej sprasować ciąg znaków by oczyścił z odstępów przecinków itp NP. "Nazwa bank - Wykonywanie przelewów."
efekt "nazwa-bank-wykonywanie-przelewów"

trzeba czyścić po kolei najpierw odstępy, później duże litery następnie przecinki czy jest ogólna funkcja która prasuje wszystko ?

gac3k
Masz tutaj funkcję której ja osobiście używam, może ci spasuje smile.gif

  1. function sanitize($string)
  2. {
  3. $banned = array(' ','.',';','\'','-','?','!','/','\\');
  4. $string = str_replace($banned,'-',$string);
  5.  
  6. $unPretty = array('/ä/', '/ö/', '/ü/', '/Ä/', '/Ö/', '/Ü/', '/ß/',
  7. '/ą/', '/Ą/', '/ć/', '/Ć/', '/ę/', '/Ę/', '/ł/', '/Ł/' ,'/ń/', '/Ń/', '/ó/', '/Ó/', '/ś/', '/Ś/', '/ź/', '/Ź/', '/ż/', '/Ż/',
  8. '/Š/','/Ž/','/š/','/ž/','/?/','/Ŕ/','/Á/','/Â/','/Ă/','/Ä/','/Ĺ/','/Ç/','/Č/','/É/','/Ę/','/Ë/','/Ě/','/Í/','/Î/','/Ď/','/Ń/',
  9. '/Ň/','/Ó/','/Ô/','/Ő/','/Ö/','/Ř/','/Ů/','/Ú/','/Ű/','/Ü/','/Ý/','/ŕ/','/á/','/â/','/ă/','/ä/','/ĺ/','/ç/','/č/','/é/','/ę/',
  10. '/ë/','/ě/','/í/','/î/','/ď/','/ń/','/ň/','/ó/','/ô/','/ő/','/ö/','/ř/','/ů/','/ú/','/ű/','/ü/','/ý/','/˙/',
  11. '/Ţ/','/ţ/','/Đ/','/đ/','/ß/','/?/','/?/','/Ć/','/ć/','/ľ/');
  12.  
  13. $pretty = array('ae', 'oe', 'ue', 'Ae', 'Oe', 'Ue', 'ss',
  14. 'a', 'A', 'c', 'C', 'e', 'E', 'l', 'L', 'n', 'N', 'o', 'O', 's', 'S', 'z', 'Z', 'z', 'Z',
  15. 'S','Z','s','z','Y','A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','N',
  16. 'O','O','O','O','O','O','U','U','U','U','Y','a','a','a','a','a','a','c','e','e','e',
  17. 'e','i','i','i','i','n','o','o','o','o','o','o','u','u','u','u','y','y',
  18. 'TH','th','DH','dh','ss','OE','oe','AE','ae','u');
  19. $string = trim(strtolower(preg_replace($unPretty, $pretty, $string)));
  20.  
  21. return $string;
  22.  
  23. }


w sumie, ona też usuwa polskie znaki, jeśli chcesz tylko to parsowanie to usuń zmienne pretty i unpretty a ze zmiennej string wywal całą funkcję preg_replace i zamień ją na $string
darney
zastanawiam się nad jedną jeszcze rzeczą. Linki owszem sprasują się fajnie ale u mnie URL odbierane są na podstawie linków i URL będą bez polskich znaków a wolal bym w URL mieć polskie znaki a linki bez polskich. Tak widzę że strony działają. Np. Na wp jest link do artykułu np. "Leper zgwałcił księdza"
a hreff="leper-zgwalcil-ksiedza" a przechwycony URL chciał bym aby zawierał polskie znaki "leper-zgwałcił-księdza"

Po Twoim skrypcie mój przechwyci url bez polskich znaków. Chyba że na podstawie bazy bym pobierał tytuły do url ? Jak lepiej to zrobić tongue.gif ?
potreb
Co do funkcji czyszczącej z polskich znaków i ogólnie o mod rewrite erix na blogu ma fajne art: http://eriz.pcinside.pl/weblog/mod_rewrite...wiazac-208.html
gac3k
Masz napisałem Ci jak to napisać żeby były pl znaki, ale masz gotowy wzór:

  1. function sanitize($string)
  2. {
  3. $banned = array(' ','.',';','\'','-','?','!','/','\\');
  4. $string = str_replace($banned,'-',$string);
  5.  
  6. $string = trim(strtolower($string));
  7.  
  8. return $string;
  9.  
  10. }
darney
Cytat(gac3k @ 20.07.2011, 13:14:26 ) *
Masz tutaj funkcję której ja osobiście używam, może ci spasuje smile.gif

  1. function sanitize($string)
  2. {
  3. $banned = array(' ','.',';','\'','-','?','!','/','\\');
  4. $string = str_replace($banned,'-',$string);
  5.  
  6. $unPretty = array('/ä/', '/ö/', '/ü/', '/Ä/', '/Ö/', '/Ü/', '/ß/',
  7. '/ą/', '/Ą/', '/ć/', '/Ć/', '/ę/', '/Ę/', '/ł/', '/Ł/' ,'/ń/', '/Ń/', '/ó/', '/Ó/', '/ś/', '/Ś/', '/ź/', '/Ź/', '/ż/', '/Ż/',
  8. '/Š/','/Ž/','/š/','/ž/','/?/','/Ŕ/','/Á/','/Â/','/Ă/','/Ä/','/Ĺ/','/Ç/','/Č/','/É/','/Ę/','/Ë/','/Ě/','/Í/','/Î/','/Ď/','/Ń/',
  9. '/Ň/','/Ó/','/Ô/','/Ő/','/Ö/','/Ř/','/Ů/','/Ú/','/Ű/','/Ü/','/Ý/','/ŕ/','/á/','/â/','/ă/','/ä/','/ĺ/','/ç/','/č/','/é/','/ę/',
  10. '/ë/','/ě/','/í/','/î/','/ď/','/ń/','/ň/','/ó/','/ô/','/ő/','/ö/','/ř/','/ů/','/ú/','/ű/','/ü/','/ý/','/˙/',
  11. '/Ţ/','/ţ/','/Đ/','/đ/','/ß/','/?/','/?/','/Ć/','/ć/','/ľ/');
  12.  
  13. $pretty = array('ae', 'oe', 'ue', 'Ae', 'Oe', 'Ue', 'ss',
  14. 'a', 'A', 'c', 'C', 'e', 'E', 'l', 'L', 'n', 'N', 'o', 'O', 's', 'S', 'z', 'Z', 'z', 'Z',
  15. 'S','Z','s','z','Y','A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','N',
  16. 'O','O','O','O','O','O','U','U','U','U','Y','a','a','a','a','a','a','c','e','e','e',
  17. 'e','i','i','i','i','n','o','o','o','o','o','o','u','u','u','u','y','y',
  18. 'TH','th','DH','dh','ss','OE','oe','AE','ae','u');
  19. $string = trim(strtolower(preg_replace($unPretty, $pretty, $string)));
  20.  
  21. return $string;
  22.  
  23. }


w sumie, ona też usuwa polskie znaki, jeśli chcesz tylko to parsowanie to usuń zmienne pretty i unpretty a ze zmiennej string wywal całą funkcję preg_replace i zamień ją na $string



Niestety coś nie mogę się odwołać do powyższej funkcji. Czy robię coś źle ?
  1. $pager="jakieś polskie znaki"; //tutaj zamiast tego mam zmienna która generuje te znaki procentowe itp
  2. $sani = sanitize($pager);
  3. echo $sani;
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.