Skocz do zawartości

[PHP]Usuwanie/zamienianie polskich znaków


Ptaq

Rekomendowane odpowiedzi

  • Odpowiedzi 39
  • Dodano
  • Ostatniej odpowiedzi
  • 1 rok później...
  • 2 tygodnie później...

A ja dodam coś od siebie :)

typowo opis jak przygotować przyjazny adres URL ze słowami kluczowymi (lub URI) z ciągu z polskimi znakami w kodowaniu iso-8859-2 (latin2) - zamienia nie tylko polskie znaki ale także wszelkie inne ogonki daszki i kropki z kodowania iso-8859-2!

https://webmajsterka.tosiek.pl/usuwanie-zna...-8859-2-latin2/

oraz tylko usuwanie polskich znaków w 3 kodowaniach, iso-8859-2, utf-8 i windows-1250

https://webmajsterka.tosiek.pl/usuwanie-polskich-znakow-php/

Niedługo opisze jak można ciekawie w utf-8 sobie poradzić (tak utf-8 jest faworyzowany przez php :( i inne zgodne z UNICODE )

Nie mam pojęcia dlaczemu wyleciały i mają filtera Polskie znaki w adresach Joomla od nowa napisane, czytelnie i logicznie. Dylemat adres z www czy bez? Powinno to rozwiać wszelkie wątpliwości.

Naprawiam kodowanie [krzaki, chińskie znaki, polskie znaki] dowiedz się także czymże jest kodowanie znaków bo to podstawa.

Odnośnik do komentarza
Udostępnij na innych stronach

No to teraz moja wersja, zamieniająca wszystko co popadnie, nie tylko nasze narodowe ogonki.

  function remove_accents($string) {
  if ( !preg_match('/[\x80-\xff]/', $string) )
	  return $string;

	  $chars = array(
	  chr(195).chr(128) => 'A', chr(195).chr(129) => 'A',
	  chr(195).chr(130) => 'A', chr(195).chr(131) => 'A',
	  chr(195).chr(132) => 'A', chr(195).chr(133) => 'A',
	  chr(195).chr(134) => 'AE', chr(195).chr(166) => 'ae',
	  chr(195).chr(135) => 'C', chr(195).chr(136) => 'E',
	  chr(195).chr(137) => 'E', chr(195).chr(138) => 'E',
	  chr(195).chr(139) => 'E', chr(195).chr(140) => 'I',
	  chr(195).chr(141) => 'I', chr(195).chr(142) => 'I',
	  chr(195).chr(143) => 'I', chr(195).chr(145) => 'N',
	  chr(195).chr(146) => 'O', chr(195).chr(147) => 'O',
	  chr(195).chr(148) => 'O', chr(195).chr(149) => 'O',
	  chr(195).chr(150) => 'O', chr(195).chr(153) => 'U',
	  chr(195).chr(152) => 'O', chr(195).chr(184) => 'o',
	  chr(195).chr(154) => 'U', chr(195).chr(155) => 'U',
	  chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y',
	  chr(195).chr(159) => 's', chr(195).chr(160) => 'a',
	  chr(195).chr(161) => 'a', chr(195).chr(162) => 'a',
	  chr(195).chr(163) => 'a', chr(195).chr(164) => 'a',
	  chr(195).chr(165) => 'a', chr(195).chr(167) => 'c',
	  chr(195).chr(168) => 'e', chr(195).chr(169) => 'e',
	  chr(195).chr(170) => 'e', chr(195).chr(171) => 'e',
	  chr(195).chr(172) => 'i', chr(195).chr(173) => 'i',
	  chr(195).chr(174) => 'i', chr(195).chr(175) => 'i',
	  chr(195).chr(177) => 'n', chr(195).chr(178) => 'o',
	  chr(195).chr(179) => 'o', chr(195).chr(180) => 'o',
	  chr(195).chr(181) => 'o', chr(195).chr(182) => 'o',
	  chr(195).chr(182) => 'o', chr(195).chr(185) => 'u',
	  chr(195).chr(186) => 'u', chr(195).chr(187) => 'u',
	  chr(195).chr(188) => 'u', chr(195).chr(189) => 'y',
	  chr(195).chr(191) => 'y',
	  chr(196).chr(128) => 'A', chr(196).chr(129) => 'a',
	  chr(196).chr(130) => 'A', chr(196).chr(131) => 'a',
	  chr(196).chr(132) => 'A', chr(196).chr(133) => 'a',
	  chr(196).chr(134) => 'C', chr(196).chr(135) => 'c',
	  chr(196).chr(136) => 'C', chr(196).chr(137) => 'c',
	  chr(196).chr(138) => 'C', chr(196).chr(139) => 'c',
	  chr(196).chr(140) => 'C', chr(196).chr(141) => 'c',
	  chr(196).chr(142) => 'D', chr(196).chr(143) => 'd',
	  chr(196).chr(144) => 'D', chr(196).chr(145) => 'd',
	  chr(196).chr(146) => 'E', chr(196).chr(147) => 'e',
	  chr(196).chr(148) => 'E', chr(196).chr(149) => 'e',
	  chr(196).chr(150) => 'E', chr(196).chr(151) => 'e',
	  chr(196).chr(152) => 'E', chr(196).chr(153) => 'e',
	  chr(196).chr(154) => 'E', chr(196).chr(155) => 'e',
	  chr(196).chr(156) => 'G', chr(196).chr(157) => 'g',
	  chr(196).chr(158) => 'G', chr(196).chr(159) => 'g',
	  chr(196).chr(160) => 'G', chr(196).chr(161) => 'g',
	  chr(196).chr(162) => 'G', chr(196).chr(163) => 'g',
	  chr(196).chr(164) => 'H', chr(196).chr(165) => 'h',
	  chr(196).chr(166) => 'H', chr(196).chr(167) => 'h',
	  chr(196).chr(168) => 'I', chr(196).chr(169) => 'i',
	  chr(196).chr(170) => 'I', chr(196).chr(171) => 'i',
	  chr(196).chr(172) => 'I', chr(196).chr(173) => 'i',
	  chr(196).chr(174) => 'I', chr(196).chr(175) => 'i',
	  chr(196).chr(176) => 'I', chr(196).chr(177) => 'i',
	  chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij',
	  chr(196).chr(180) => 'J', chr(196).chr(181) => 'j',
	  chr(196).chr(182) => 'K', chr(196).chr(183) => 'k',
	  chr(196).chr(184) => 'k', chr(196).chr(185) => 'L',
	  chr(196).chr(186) => 'l', chr(196).chr(187) => 'L',
	  chr(196).chr(188) => 'l', chr(196).chr(189) => 'L',
	  chr(196).chr(190) => 'l', chr(196).chr(191) => 'L',
	  chr(197).chr(128) => 'l', chr(197).chr(129) => 'L',
	  chr(197).chr(130) => 'l', chr(197).chr(131) => 'N',
	  chr(197).chr(132) => 'n', chr(197).chr(133) => 'N',
	  chr(197).chr(134) => 'n', chr(197).chr(135) => 'N',
	  chr(197).chr(136) => 'n', chr(197).chr(137) => 'N',
	  chr(197).chr(138) => 'n', chr(197).chr(139) => 'N',
	  chr(197).chr(140) => 'O', chr(197).chr(141) => 'o',
	  chr(197).chr(142) => 'O', chr(197).chr(143) => 'o',
	  chr(197).chr(144) => 'O', chr(197).chr(145) => 'o',
	  chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe',
	  chr(197).chr(148) => 'R',chr(197).chr(149) => 'r',
	  chr(197).chr(150) => 'R',chr(197).chr(151) => 'r',
	  chr(197).chr(152) => 'R',chr(197).chr(153) => 'r',
	  chr(197).chr(154) => 'S',chr(197).chr(155) => 's',
	  chr(197).chr(156) => 'S',chr(197).chr(157) => 's',
	  chr(197).chr(158) => 'S',chr(197).chr(159) => 's',
	  chr(197).chr(160) => 'S', chr(197).chr(161) => 's',
	  chr(197).chr(162) => 'T', chr(197).chr(163) => 't',
	  chr(197).chr(164) => 'T', chr(197).chr(165) => 't',
	  chr(197).chr(166) => 'T', chr(197).chr(167) => 't',
	  chr(197).chr(168) => 'U', chr(197).chr(169) => 'u',
	  chr(197).chr(170) => 'U', chr(197).chr(171) => 'u',
	  chr(197).chr(172) => 'U', chr(197).chr(173) => 'u',
	  chr(197).chr(174) => 'U', chr(197).chr(175) => 'u',
	  chr(197).chr(176) => 'U', chr(197).chr(177) => 'u',
	  chr(197).chr(178) => 'U', chr(197).chr(179) => 'u',
	  chr(197).chr(180) => 'W', chr(197).chr(181) => 'w',
	  chr(197).chr(182) => 'Y', chr(197).chr(183) => 'y',
	  chr(197).chr(184) => 'Y', chr(197).chr(185) => 'Z',
	  chr(197).chr(186) => 'z', chr(197).chr(187) => 'Z',
	  chr(197).chr(188) => 'z', chr(197).chr(189) => 'Z',
	  chr(197).chr(190) => 'z', chr(197).chr(191) => 's',
	  // Euro 
	  chr(226).chr(130).chr(172) => 'E',
	  // Funt
	  chr(194).chr(163) => '');

	  $string = strtr($string, $chars);

  return $string;
 }

bnormalny.jpg

Tam daleko w Himalajach powiesił się słoń na trąbie.

Odnośnik do komentarza
Udostępnij na innych stronach

zrobiłem coś takiego

$fileOryName = zamien(pathinfo($_FILES[$name]["name"] , PATHINFO_FILENAME ));

i to odwołuje się do funkcji

function zamien($zrodlo)

{

$tabela = Array(

"ą" => "a", "ę" => "ę", "ć" => "c", "ń" => "n",
);
return strtr($zrodlo,$tabela);

}

ale niestety nie działa ta zamiana, jeśli podstawie inne litery(bez ogonków) to zmieniają sięna takie ja podam.

Odnośnik do komentarza
Udostępnij na innych stronach

asusek5

z jakiego kodowania? w jakim kodowaniu bedzie działał skrypt? na jakie kodowanie ma zmienic?

W ten sposób nie zadziała. No... może zadziała (ale marne szanse) tylko jeżeli: baza danych, kodowanie strony www i edytor w ktorym pisałeś ten skrypt będą miały ustawione identyczne kodowanie znaków.

Zamiast: ą należy używać jego odpowiednika w postaci: albo numeru ASCII albo zapisu szesnastkowego. Wtedy zadziała na 100%. Przykładów z tablicami juz nie brakuje w tym wątku.

.

Odnośnik do komentarza
Udostępnij na innych stronach

To jest najprostrza tablica konwertacji z UTF-8 na litery bez ogonków. I musi zadziałać. Jeżeli nie działa to znaczy ze oryginalny tekst nie jest w UTF-8.

function UTF8ISO($string){
$utf8iso = array(
"\xc4\x85" => "a",
"\xc4\x84" => "A",
"\xc4\x87" => "c",
"\xc4\x86" => "C",
"\xc4\x99" => "e",
"\xc4\x98" => "E",
"\xc5\x82" => "l",
"\xc5\x81" => "L",
"\xc5\x84" => "n",
"\xc5\x83" => "N",
"\xc3\xb3" => "o",
"\xc3\x93" => "O",
"\xc5\x9b" => "s",
"\xc5\x9a" => "S",
"\xc5\xbc" => "z",
"\xc5\xbb" => "Z",
"\xc5\xba" => "z",
"\xc5\xb9" => "Z"
);
return strtr($string, $utf8iso);
}

.

Odnośnik do komentarza
Udostępnij na innych stronach

$string = iconv("UTF-8", "UTF-8//IGNORE", $string);

$string = iconv("UTF-8", "ASCII//TRANSLIT", $string);

$string = str_replace("--", "-", strtolower(str_replace(" ", "-", trim(preg_replace("/([^a-zA-Z0-9,-\s])/Us","", $string)))));

a cos takiego?

Problem jest taki, że nie na wszystkich serwerach jest iconv :)

bnormalny.jpg

Tam daleko w Himalajach powiesił się słoń na trąbie.

Odnośnik do komentarza
Udostępnij na innych stronach

asusek5, żeby zmienić zawartość pliku musisz go odczytać w międzyczasie przerobić a potem zapisać...

file_get_contents() oraz file_put_contents()

Nie mam pojęcia dlaczemu wyleciały i mają filtera Polskie znaki w adresach Joomla od nowa napisane, czytelnie i logicznie. Dylemat adres z www czy bez? Powinno to rozwiać wszelkie wątpliwości.

Naprawiam kodowanie [krzaki, chińskie znaki, polskie znaki] dowiedz się także czymże jest kodowanie znaków bo to podstawa.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności