Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z Polskimi znakami w str_replace
Forum PHP.pl > Forum > Przedszkole
lukaszk
Witam, mam problem z funkcj± i nie wiem jak to przeskoczyć.
Poniższa funkcja zamienia znaki na inne mam problem z ± ę ¶ ć Ľ itd chcę aby zamieniała na a e .....
a obecnie niestety usuwa polskie znaki i zwraca wynik bez ładu i składu proszę o pomoc co muszę dopisać/zmienić w kodzie?
  1. <?php
  2. function friendly_seo_string($string, $separator = '-')
  3. {
  4. $string = trim($string);
  5.  
  6. $string = strtolower($string); // convert to lowercase text
  7.  
  8. $string = trim(ereg_replace("[^ A-Za-z0-9_]", " ", $string));
  9.  
  10.  
  11.  
  12. $string = ereg_replace("[ tnr]+", "-", $string);
  13.  
  14. $string = str_replace(" ", $separator, $string);
  15.  
  16. $string = ereg_replace("[ -]+", "-", $string);
  17.  
  18. return $string;
  19. }
  20. ?>
JoShiMa
1. SprawdĽ, czy plik wktórymmasz ten kod jest w odpowiednim kodowaniu zapisany)

2. może użyj preg_replace

3. Może tu Ci pomoże: iconv()
lukaszk
Super pomogło dodaje z polskimi znakami a jak teraz poprawić kod aby te polskie znaki zostały zamienione z ± na a itd?
  1. <?php
  2. function friendly_seo_string($string, $separator = '-')
  3. {
  4. $string = trim($string);
  5.  
  6. $string = strtolower($string); // convert to lowercase text
  7.  
  8. $string = trim(preg_replace ("[^ A-Za-z0-9_]", " ", $string));
  9.  
  10.  
  11. $string = ereg_replace("[ tnr]+", "-", $string);
  12.  
  13. $string = str_replace(" ", $separator, $string);
  14.  
  15. $string = ereg_replace("[ -]+", "-", $string);
  16.  
  17. return $string;
  18. }
  19. ?>
JoShiMa
patrz punkt 3 smile.gif


a potem kliknij co trzeba wink.gif
darko
Z ereg_replace już się nie powinno korzystać. W ogóle nie powinno się korzystać z funkcji z rodziny ereg_*
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl-pl" lang="pl-pl">
  3. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  4. <title>replace polish diacritics</title>
  5. </head>
  6. <?php
  7. $str = 'Zażółć gę¶l± jaĽń';
  8. echo $str . '<hr/>';
  9. $str_clean = str_replace(
  10. array('±', 'ć', 'ę', 'ł', 'ń', 'ó', '¶', 'Ľ', 'ż', 'ˇ', 'Ć', 'Ę', 'Ł', 'Ń', 'Ó', '¦', '¬', 'Ż'),
  11. array('a', 'c', 'e', 'l', 'n', 'o', 's', 'z', 'z', 'A', 'C', 'E', 'L', 'N', 'O', 'S', 'Z', 'Z'),
  12. $str);
  13. echo $str_clean;
  14. ?>
  15. </body></html>
lukaszk
Na podanym przez ciebie przykładzie działa ale niestety na moje stronie nie wszystkie znaki zamienia
na wej¶ciu
±¶AˇćĽżŻ¬ˇĆÓŁ
DAJE WYNIK
±¶AˇcĽzZ¬ˇCOL
darko
Wrzuć kod, sk±d mamy wiedzieć, dlaczego u ciebie nie działa?
rocktech.pl
Cytat(lukaszk @ 5.04.2011, 17:31:53 ) *
Na podanym przez ciebie przykładzie działa ale niestety na moje stronie nie wszystkie znaki zamienia
na wej¶ciu
±¶AˇćĽżŻ¬ˇĆÓŁ
DAJE WYNIK
±¶AˇcĽzZ¬ˇCOL


Spróbuj.
  1.  
  2. if (function_exists('iconv')) {
  3. setlocale(LC_CTYPE, 'pl_PL.utf8');
  4. $string = iconv('UTF-8', 'ASCII//TRANSLIT', $string);
  5. }
JoShiMa
Cytat(rocktech.pl @ 5.04.2011, 16:48:47 ) *
Spróbuj.
  1.  
  2. if (function_exists('iconv')) {
  3. setlocale(LC_CTYPE, 'pl_PL.utf8');
  4. $string = iconv('UTF-8', 'ASCII//TRANSLIT', $string);
  5. }


No to samo zalecam koledze, ale jaki¶ nie chce zajrzeć do iconv()
Pawel_W
po zmianie do ASCII//TRANSLIT zostaj± zmiękczenia w postaci ' o ile dobrze pamiętam smile.gif
JoShiMa
Bo trzeba klikn±ć w link, który podałam w pierwszym po¶cie żeby zobaczyć, że trzeba dać 'TRANSLIT//IGNORE'
lukaszk
hej nie wiem dlaczego ale jak wysyłam tekst do funkcji b±dĽ w tym samym pliku przez


najprostrze
  1. $plik = strtolower($plik);
  2. $plik = str_replace(" ","-",$plik);
  3. $plik = str_replace(":","",$plik);
  4. $plik = str_replace("±","a",$plik);
  5. $plik = str_replace("ę","e",$plik);
  6. $plik = str_replace("¶","s",$plik);
  7. $plik = str_replace("ć","c",$plik);
  8. $plik = str_replace("Ľ","x",$plik);
  9. $plik = str_replace("ń","n",$plik);
  10. $plik = str_replace("ł","l",$plik);
  11. $plik = str_replace("?","",$plik);
  12. $plik = str_replace("!","",$plik);


działa ale nie wiem dlaczego z polskich znaków robi± się krzaczki w pliku wynikowym

palikot-10-kw¶e¶c±lnasujmy-kaczynskiego.php

również zawarto¶ć pliku zawiera takie krzaczki proszę o pomoc jak to naprawić
kodowanie mam
  1. charset=iso-8859-2


Kod odpowiedzialny za generowanie podstron (artykułów)


  1. plik = $_POST['plik_name_create'];
  2. $zawartosc1 = $_POST['zawartosc'];
  3. $title = $_POST['plik_name_create'];
  4. $description = $_POST['opis_seo'];
  5. $keywords = $_POST['kluczowe_seo'];
  6. $rating = $_POST['rating'];
  7. $revisit = $_POST['revisit'];
  8. $expires = $_POST['expires'];
  9. $distribution = $_POST['distribution'];
  10. $robots = $_POST['robots'];
  11. $allmeta='<html>
  12. <head>
  13. <title>'.$title.'</title>
  14. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  15. <meta http-equiv="Content-Language" content="pl">
  16. <meta name="description" content="'.$description.'">
  17. <meta name="keywords" content="'.$keywords.'">
  18. <meta name="rating" content="'.$rating.'">
  19. <meta name="revisit-after" content="'.$revisit.'">
  20. <meta name="copyright" content="'.$copyright.'">
  21. <meta name="expires" content="'.$expires.'">
  22. <meta name="distribution" content="global">
  23. <meta name="robots" content="index,follow">
  24. <meta name="author" content="'.$author.'">
  25. <link rel="stylesheet" href="../css/general.css" type="text/css" media="screen" title="default" />
  26. <head>';
  27.  
  28.  
  29. $zawartosc="$allmeta$tresc_newsa$koniechtml";
  30. //$str = friendly_seo_string($plik);
  31. $plik = strtolower($plik);
  32. $plik = str_replace(" ","-",$plik);
  33. $plik = str_replace(":","",$plik);
  34. $plik = str_replace("±","a",$plik);
  35. $plik = str_replace("ę","e",$plik);
  36. $plik = str_replace("¶","s",$plik);
  37. $plik = str_replace("ć","c",$plik);
  38. $plik = str_replace("Ľ","x",$plik);
  39. $plik = str_replace("ń","n",$plik);
  40. $plik = str_replace("ł","l",$plik);
  41. $plik = str_replace("?","",$plik);
  42. $plik = str_replace("!","",$plik);
  43. $str = $plik;
  44. // sprawdzamy czy dane istniej±
  45. if($katalog and $str and $zawartosc) {
  46. $str="$str$rozszerzenie";
  47. $link="$domena_http/$katalog/$str";
  48. $ifegzist="$katalog/$str";
  49. // tworzymy plik w zalozonym katalogu
  50. $test = file_exists("$ifegzist"); //sprawdzenie czy plik istnieje
  51. if ($test) //jeżeli plik nie istnieje (zmienna $test=FALSE)
  52. {
  53. echo '<p class="message_05 message-error_2 canhide">
  54. <b>Na serwerze znajduje się plik '.$ifegzist.' Musisz wybrać inna nazwę i jeszcze raz wygenerować</b>
  55. <img title="zamknij" width="25px;" align="right" src="images/delete.png"></p>';
  56. } else {
  57. fopen("$katalog/$str","w");
  58. $zonk = fopen("$katalog/$str","wb");
  59. flock($zonk, LOCK_EX);
  60. fwrite($zonk, $zawartosc);
  61. flock($zonk, LOCK_UN);
  62. fclose($zonk);
  63. echo "<br>";
  64. echo '<p class="message_05 message-success_2 canhide">
  65. <b>Plik o nazwie '.$str.' jest utworzony w '.$katalog.'/'.$str.'</b>
  66. <img title="zamknij" width="25px;" align="right" src="images/delete.png"></p>';
  67. }
  68. }
  69. /*
  70. KONIEC DODAWANIE PODSTRON
  71. */
Fifi209
Pozwolę sobie podlinkować
http://eriz.pcinside.pl/weblog/mod_rewrite...ac-208.html#t81
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.