Pozycjonowanie i OptymalizacjaPozycjonowanie i Optymalizacja
 Szukaj   Pomoc    Regulamin    Użytkownicy   Kalendarz

Witaj Gościu ( Zaloguj | Rejestruj )

3 Stron V   1 2 3 >  
Reply to this topicStart new topic
> [PHP]Usuwanie/zamienianie polskich znaków, ż -> z , ó -> o, ł -> l itd.
Ptaq
post 21.09.07 - 12:04
Post #1


pozycja: 43


Grupa: Members
Postów: 2,411
Podziekowań: 38
Dołączył: 19.06.2005
Skąd: Dąbrowa Górnicza
Nr użytkownika: 1,928



Potrzebuje jakoś zamieniać polskie znaki na ich odpowiedniki bez 'ogonków'.

Testowałem zarówno funkcje
KOD
htmlspecialchars


oraz taki kod:

KOD
function toPermalink($string)
    {
        
        
        $unPretty = array('/ä/', '/ö/', '/ü/', '/Ä/', '/Ö/', '/Ü/', '/ß/',
                            '/ą/', '/Ą/', '/ć/', '/Ć/', '/ę/', '/Ę/', '/ł/', '/Ł/' ,'/ń/', '/Ń/', '/ó/', '/Ó/', '/ś/', '/Ś/', '/ź/', '/Ź/', '/ż/', '/Ż/',
                            '/Š/','/Ž/','/š/','/ž/','/Ÿ/','/Ŕ/','/Á/','/Â/','/Ă/','/Ä/','/Ĺ/','/Ç/','/Č/','/É/','/Ę/','/Ë/','/Ě/','/Í/','/Î/','/Ď/','/Ń/',
                            '/Ň/','/Ó/','/Ô/','/Ő/','/Ö/','/Ř/','/Ů/','/Ú/','/Ű/','/Ü/','/Ý/','/ŕ/','/á/','/â/','/ă/','/ä/','/ĺ/','/ç/','/č/','/é/','/ę/',
                            '/ë/','/ě/','/í/','/î/','/ď/','/ń/','/ň/','/ó/','/ô/','/ő/','/ö/','/ř/','/ů/','/ú/','/ű/','/ü/','/ý/','/˙/',
                            '/Ţ/','/ţ/','/Đ/','/đ/','/ß/','/Œ/','/œ/','/Ć/','/ć/','/ľ/');

        $pretty   = array('ae', 'oe', 'ue', 'Ae', 'Oe', 'Ue', 'ss',
                            'a', 'A', 'c', 'C', 'e', 'E', 'l', 'L', 'n', 'N', 'o', 'O', 's', 'S', 'z', 'Z', 'z', 'Z',
                            'S','Z','s','z','Y','A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','N',
                            'O','O','O','O','O','O','U','U','U','U','Y','a','a','a','a','a','a','c','e','e','e',
                            'e','i','i','i','i','n','o','o','o','o','o','o','u','u','u','u','y','y',
                            'TH','th','DH','dh','ss','OE','oe','AE','ae','u');

        $permalink = strtolower(preg_replace($unPretty, $pretty, $string));
        return  str_replace(" ", "-", preg_replace("/[^a-zA-Z0-9 ]/", "", $permalink) );

    }


jednak żadne z tych rozwiązań nie potrafi zamienić "ó" - ten znak zawsze jest "ó" - pozostałe się ładnie zamieniają.


--------------------
JUŻ PONAD 1900 UŻYTKOWNIKÓW SKORZYSTAJ Z PEWNEGO ROZWIĄZANIA

Go to the top of the page
 
+Quote Post
Ptaq
post 21.09.07 - 12:09
Post #2


pozycja: 43


Grupa: Members
Postów: 2,411
Podziekowań: 38
Dołączył: 19.06.2005
Skąd: Dąbrowa Górnicza
Nr użytkownika: 1,928



Pozwole sobie odpisać - u mnie zadziałało przed chwilą:

KOD
<?php
   $tekst = 'Zażółć gęślą jaźń';
   $wynik = strtr($tekst, 'ĘÓĄŚŁŻŹĆŃęóąśłżźćń', 'EOASLZZCNeoaslzzcn');
   echo($wynik);
?>


Moze komus sie przyda wink.gif

EDIT:

a wie ktoś czemu jak zamienie to na funkcje:

KOD
function zamiana($tekst)
   {
   $wynik = strtr($tekst, 'ĘÓĄŚŁŻŹĆŃęóąśłżźćń', 'EOASLZZCNeoaslzzcn');
   echo($tekst);
   }
   zamiana(śćółóóółłłł);


to znów "ó" nie zamienia sad.gif ?

Ten post edytował Ptaq 21.09.07 - 12:15


--------------------
JUŻ PONAD 1900 UŻYTKOWNIKÓW SKORZYSTAJ Z PEWNEGO ROZWIĄZANIA

Go to the top of the page
 
+Quote Post
yavaho
post 21.09.07 - 12:51
Post #3


za puszczanie bąków też można dostać bana


Grupa: Members
Postów: 2,076
Podziekowań: 38
Dołączył: 9.08.2005
Skąd: my cie znamy?
Nr użytkownika: 2,355



Zmiast echo($tekst); ma być echo($wynik);

Zamiast zamiana(śćółóóółłłł); ma być zamiana('śćółóóółłłł');


--------------------
produkcja filmów, filmy reklamowe, filmy wizerunkowe, spoty telewizyjne, produkcje filmowe.
Go to the top of the page
 
+Quote Post
Ptaq
post 21.09.07 - 12:59
Post #4


pozycja: 43


Grupa: Members
Postów: 2,411
Podziekowań: 38
Dołączył: 19.06.2005
Skąd: Dąbrowa Górnicza
Nr użytkownika: 1,928



Ale wstyd taki błąd...



ale ważne ze już śmiga yess.gif


--------------------
JUŻ PONAD 1900 UŻYTKOWNIKÓW SKORZYSTAJ Z PEWNEGO ROZWIĄZANIA

Go to the top of the page
 
+Quote Post
mkr
post 21.09.07 - 14:51
Post #5





Grupa: Members
Postów: 2,950
Podziekowań: 54
Dołączył: 24.08.2005
Skąd: 91.121.92.202
Nr użytkownika: 2,500



W notatkach opery jeszcze mam takie coś smile.gif Może się przydać... znalezione gdzieś w sieci...
KOD
function plCharset($string) {
    
    $string = strtolower($string);
    $polskie = array(',', ' - ',' ','ę', 'Ę', 'ó', 'Ó', 'Ą', 'ą', 'Ś', 's', 'ł', 'Ł', 'ż', 'Ż', 'Ź', 'ź', 'ć', 'Ć', 'ń', 'Ń','-',"'","/","?", '"', ":", 'ś', '!','.', '&', '&amp;', '#', ';', '[',']','domena.pl', '(', ')', '`', '%', '”', '„', '…');
    $miedzyn = array('-','-','-','e', 'e', 'o', 'o', 'a', 'a', 's', 's', 'l', 'l', 'z', 'z', 'z', 'z', 'c', 'c', 'n', 'n','-',"","","","","",'s','','', '', '', '', '', '', '', '', '', '', '', '', '');
    $string = str_replace($polskie, $miedzyn, $string);
    
    // usuń wszytko co jest niedozwolonym znakiem
    $string = preg_replace('/[^0-9a-z\-]+/', '', $string);
    
    // zredukuj liczbę myślników do jednego obok siebie
    $string = preg_replace('/[\-]+/', '-', $string);
    
    // usuwamy możliwe myślniki na początku i końcu
    $string = trim($string, '-');

    $string = stripslashes($string);
    
    // na wszelki wypadek
    $string = urlencode($string);
    
    return $string;
}


--------------------
Go to the top of the page
 
+Quote Post
Pilsener
post 8.12.07 - 20:00
Post #6





Grupa: Members
Postów: 277
Podziekowań: 0
Dołączył: 15.10.2007
Skąd: Olsztyn
Nr użytkownika: 10,974



Dopisze swoje rozwiązanie:
KOD
function przyjazny_string($string){
   $string = strtr($string, 'ĘęÓ󥹌śŁłŹźŻżĆćŃń', 'EeOoAaSsLlZzZzCcNn');
   $string = strtr($string, 'ˇ¦¬±¶Ľ','ASZasz');
   $string = preg_replace("'[[:punct:][:space:]]'",'-',$string);
   $string = strtolower($string);
   $znaki = '-';
   $powtorzen = 1;
   $string = preg_replace_callback('#(['.$znaki.'])\1{'.$powtorzen.',}#', create_function('$a', 'return substr($a[0], 0,'.$powtorzen.');'), $string);
   return $string;
}


Funkcja bez problemu zamienia tekst typu "Śmiecie & Rupiecie" na "smiecie-ropiecie"

Edyta: Specjalnie napisałem przez "ó" żeby zobrazować działanie, ale jakiś czujny admin albo wredna autocenzura poprawiła smile.gif

Ten post edytował Pilsener 9.12.07 - 21:22


--------------------
Go to the top of the page
 
+Quote Post
abc
post 8.12.07 - 20:59
Post #7





Grupa: Members
Postów: 461
Podziekowań: 2
Dołączył: 1.10.2007
Nr użytkownika: 10,829



Ale Rupiecie to sie raczej przez 'u' pisze, wiec szkoda ze zamienia ;( ;D
Go to the top of the page
 
+Quote Post
MMP
post 8.12.07 - 22:40
Post #8





Grupa: Members
Postów: 4,844
Podziekowań: 7
Dołączył: 24.12.2004
Nr użytkownika: 762



To i ja dam swoje smile.gif
KOD
class hUrls
{
    private $a = array( 'Ę', 'Ó', 'Ą', 'Ś', 'Ł', 'Ż', 'Ź', 'Ć', 'Ń', 'ę', 'ó', 'ą',
                'ś', 'ł', 'ż', 'ź', 'ć', 'ń' );
    private $b = array( 'E', 'O', 'A', 'S', 'L', 'Z', 'Z', 'C', 'N', 'e', 'o', 'a',
                's', 'l', 'z', 'z', 'c', 'n' );
    
    public function Parse( $string )
    {
        $string = str_replace( $this -> a, $this -> b, $string );
        $string = preg_replace( '#[^a-z0-9]#is', ' ', $string );
        $string = trim( $string );
        $string = preg_replace( '#\s{2,}#', ' ', $string );
        $string = str_replace( ' ', '-', $string );
        return $string;
    }
}


--------------------
Spodek 2.0 | Zerknij w prawo, jest tam box "przyjaciele", kliknij drugi link.
Zicherka.pl
Go to the top of the page
 
+Quote Post
Maximus Marius
post 9.12.07 - 00:12
Post #9


Specialista od spraw niemożliwych


Grupa: Members
Postów: 4,043
Podziekowań: 53
Dołączył: 20.12.2006
Skąd: Olsztyn
Nr użytkownika: 7,876



To jeszcze niech ktoś napisze taką wersję która bedzie łykała PL-znaki w dowolnym kodowaniu biggrin.gif
Przez dowolne kodowanie rozumiem: UTF8 ISO8859-2(latin2) WIN1250(cp1250)

Niech polskie znaki bedą zdefiniowane nie jako STRINGI ale jako liczby w zapisie szesnastkowym , podczas kopiowania i wklejania z takim kodem nic sie nie stanie smile.gif
A jak sie kopiuje i wkleja z Pl-znakami to czasmi dzieją sie różne rzeczy smile.gif Już nie wspomne o tym ze trzeba być swiadomym w jakim kodowaniu sie aktualnie pracuje.
Jak bedą zapisy szesnastkowe bedzie to bardziej uniwersalne biggrin.gif [mniej osób będzie pisało że im nie działa ]

Ten post edytował Maximus Marius 9.12.07 - 00:14


--------------------
Prawdopodobnie najlepszy generator tekstu synonimek
W czym mogę pomóc pozycjonowanie stron olsztyn
Elgg - skrypt społecznościowy

Nie wiedziałem, że na świecie jest tylu idiotów, dopóki nie poznałem internetu-Lem
Go to the top of the page
 
+Quote Post
Mar
post 9.12.07 - 00:17
Post #10


Niebo wzywa, ziemia przyciąga... BlueSky.


Grupa: Members
Postów: 3,712
Podziekowań: 66
Dołączył: 29.04.2005
Skąd: 49° 34' N 19° 01' E
Nr użytkownika: 1,542



KOD
<?php

  function win2utf(){
   $tabela = Array(
    "xb9" => "xc4x85", "xa5" => "xc4x84", "xe6" => "xc4x87", "xc6" => "xc4x86",
    "xea" => "xc4x99", "xca" => "xc4x98", "xb3" => "xc5x82", "xa3" => "xc5x81",
    "xf3" => "xc3xb3", "xd3" => "xc3x93", "x9c" => "xc5x9b", "x8c" => "xc5x9a",
    "x9f" => "xc5xbc", "xaf" => "xc5xbb", "xbf" => "xc5xba", "xac" => "xc5xb9",
    "xf1" => "xc5x84", "xd1" => "xc5x83");
   return $tabela;
  }

  function iso2utf(){
   $tabela = Array(
    "xb1" => "xc4x85", "xa1" => "xc4x84", "xe6" => "xc4x87", "xc6" => "xc4x86",
    "xea" => "xc4x99", "xca" => "xc4x98", "xb3" => "xc5x82", "xa3" => "xc5x81",
    "xf3" => "xc3xb3", "xd3" => "xc3x93", "xb6" => "xc5x9b", "xa6" => "xc5x9a",
    "xbc" => "xc5xbc", "xac" => "xc5xbb", "xbf" => "xc5xba", "xaf" => "xc5xb9",
    "xf1" => "xc5x84", "xd1" => "xc5x83");
   return $tabela;
  }

  function ISO88592_2_UTF8($tekst){
   return strtr($tekst, iso2utf());
  }

  function UTF8_2_ISO88592($tekst){
   return strtr($tekst, array_flip(iso2utf()));
  }

  function WIN1250_2_UTF8($tekst){
   return strtr($tekst, win2utf());
  }

  function UTF8_2_WIN1250($tekst){
   return strtr($tekst, array_flip(win2utf()));
  }

  function ISO88592_2_WIN1250($tekst){
   return strtr($tekst, "xa1xa6xacxb1xb6xbc", "xa5x8cx8fxb9x9cx9f");
  }

  function WIN1250_2_ISO88592($tekst){
   return strtr($tekst, "xa5x8cx8fxb9x9cx9f", "xa1xa6xacxb1xb6xbc");

  }
?>

źródło: 4programmers.net


Mar.

Ten post edytował Mar 9.12.07 - 00:20


--------------------
Polecam katalog SeoPark.pl, katalog AK47 (4 lata w sieci) ...oraz nowy stary katalog Wally.pl
"Dopóki nie skorzystałem z Internetu, nie wiedziałem, że na świecie jest tylu idiotów" - Stanisław Lem
Go to the top of the page
 
+Quote Post
Maximus Marius
post 9.12.07 - 01:03
Post #11


Specialista od spraw niemożliwych


Grupa: Members
Postów: 4,043
Podziekowań: 53
Dołączył: 20.12.2006
Skąd: Olsztyn
Nr użytkownika: 7,876



KOD
<?
/*
  Funkcja do usuwania polskich znakow z tekstu o dowolnym kodowaniu
  Autor: Marius Maximus
  Inspiracja:  http://4programmers.net/PHP/FAQ/Jak_zmieni%C4%87_kodowanie_tekstu_nie_maj%C4%85c_dost%C4%99pu_do_funkcji_iconv_%5C

  Sposob uzycia:
  $zmienna = _no_pl("jakiś tekst z PL-znakami np. ŻÓŁĆ");

*/
function _no_pl($tekst)
{
   $tabela = Array(
   //WIN
    "xb9" => "a", "xa5" => "A", "xe6" => "c", "xc6" => "C",
    "xea" => "e", "xca" => "E", "xb3" => "l", "xa3" => "L",
    "xf3" => "o", "xd3" => "O", "x9c" => "s", "x8c" => "S",
    "x9f" => "z", "xaf" => "Z", "xbf" => "z", "xac" => "Z",
    "xf1" => "n", "xd1" => "N",
   //UTF
    "xc4x85" => "a", "xc4x84" => "A", "xc4x87" => "c", "xc4x86" => "C",
    "xc4x99" => "e", "xc4x98" => "E", "xc5x82" => "l", "xc5x81" => "L",
    "xc3xb3" => "o", "xc3x93" => "O", "xc5x9b" => "s", "xc5x9a" => "S",
    "xc5xbc" => "z", "xc5xbb" => "Z", "xc5xba" => "z", "xc5xb9" => "Z",
    "xc5x84" => "n", "xc5x83" => "N",
   //ISO
    "xb1" => "a", "xa1" => "A", "xe6" => "c", "xc6" => "C",
    "xea" => "e", "xca" => "E", "xb3" => "l", "xa3" => "L",
    "xf3" => "o", "xd3" => "O", "xb6" => "s", "xa6" => "S",
    "xbc" => "z", "xac" => "Z", "xbf" => "z", "xaf" => "Z",
    "xf1" => "n", "xd1" => "N");

   return strtr($tekst,$tabela);
}
?>


Ten post edytował Maximus Marius 9.12.07 - 01:37


--------------------
Prawdopodobnie najlepszy generator tekstu synonimek
W czym mogę pomóc pozycjonowanie stron olsztyn
Elgg - skrypt społecznościowy

Nie wiedziałem, że na świecie jest tylu idiotów, dopóki nie poznałem internetu-Lem
Go to the top of the page
 
+Quote Post
tj
post 9.12.07 - 10:59
Post #12


tejot


Grupa: Members
Postów: 1,055
Podziekowań: 0
Dołączył: 11.11.2006
Skąd: Ruda Śląska
Nr użytkownika: 7,097



Extra!


--------------------
blog na temat pozycjonowania stron internetowych
Go to the top of the page
 
+Quote Post
Qbexus
post 8.03.08 - 14:19
Post #13





Grupa: Members
Postów: 1,497
Podziekowań: 30
Dołączył: 6.02.2006
Nr użytkownika: 3,931



Kurcze a u mnie ta funkcja Maximusa Mariusa kompletnie nic nie zmienia. Ani przykłady ze skryptu ani nic co sam wklepie. tak jak by te kody "xb9" nic dla niego nie znaczyły jak zmienię na byle co to działa. Odpalam testowo na localhoscie może ktoś wie o co chodzi ?


--------------------
Wiem ale nie powiem :)

Magazyny Warszawa
Go to the top of the page
 
+Quote Post
Maximus Marius
post 8.03.08 - 22:41
Post #14


Specialista od spraw niemożliwych


Grupa: Members
Postów: 4,043
Podziekowań: 53
Dołączył: 20.12.2006
Skąd: Olsztyn
Nr użytkownika: 7,876



xb9 to zapis szesnastkowy

xB9 = ord(185)

popatrzył bym jakims edytorem który pokazuje zapis szesnastkowy czy rzeczywiście w Twoim tekście są te znaki tak zapisane .

A sprawdz to, bo widzę ze ukośniki "wcięło" sad.gif
KOD
<?
/*
  Funkcja do usuwania polskich znakow z tekstu o dowolnym kodowaniu
  Autor: Marius Ma\ximus
  Inspiracja:  http://4programmers.net/PHP/FAQ/Jak_zmieni%C4%87_kodowanie_tekstu_nie_maj%C4%85c_dost%C4%99pu_do_funkcji_iconv_%5C

  Sposob uzycia:
  $zmienna = _no_pl("jakiś tekst z PL-znakami np. ŻÓŁĆ");

*/
function _no_pl($tekst)
{
   $tabela = Array(
   //WIN
    "\xb9" => "a", "\xa5" => "A", "\xe6" => "c", "\xc6" => "C",
    "\xea" => "e", "\xca" => "E", "\xb3" => "l", "\xa3" => "L",
    "\xf3" => "o", "\xd3" => "O", "\x9c" => "s", "\x8c" => "S",
    "\x9f" => "z", "\xaf" => "Z", "\xbf" => "z", "\xac" => "Z",
    "\xf1" => "n", "\xd1" => "N",
   //UTF
    "\xc4\x85" => "a", "\xc4\x84" => "A", "\xc4\x87" => "c", "\xc4\x86" => "C",
    "\xc4\x99" => "e", "\xc4\x98" => "E", "\xc5\x82" => "l", "\xc5\x81" => "L",
    "\xc3\xb3" => "o", "\xc3\x93" => "O", "\xc5\x9b" => "s", "\xc5\x9a" => "S",
    "\xc5\xbc" => "z", "\xc5\xbb" => "Z", "\xc5\xba" => "z", "\xc5\xb9" => "Z",
    "\xc5\x84" => "n", "\xc5\x83" => "N",
   //ISO
    "\xb1" => "a", "\xa1" => "A", "\xe6" => "c", "\xc6" => "C",
    "\xea" => "e", "\xca" => "E", "\xb3" => "l", "\xa3" => "L",
    "\xf3" => "o", "\xd3" => "O", "\xb6" => "s", "\xa6" => "S",
    "\xbc" => "z", "\xac" => "Z", "\xbf" => "z", "\xaf" => "Z",
    "\xf1" => "n", "\xd1" => "N");

   return strtr($tekst,$tabela);
}
?>


--------------------
Prawdopodobnie najlepszy generator tekstu synonimek
W czym mogę pomóc pozycjonowanie stron olsztyn
Elgg - skrypt społecznościowy

Nie wiedziałem, że na świecie jest tylu idiotów, dopóki nie poznałem internetu-Lem
Go to the top of the page
 
+Quote Post
Qbexus
post 9.03.08 - 13:54
Post #15





Grupa: Members
Postów: 1,497
Podziekowań: 30
Dołączył: 6.02.2006
Nr użytkownika: 3,931



Ha no i teraz smiga dzieki smile.gif


--------------------
Wiem ale nie powiem :)

Magazyny Warszawa
Go to the top of the page
 
+Quote Post

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

 


Fundacja Mimo Wszystko
Zebraliśmy już
7,279.52 pln



Domeny, Hosting w Active24.pl

Domeny, Hosting w Az.pl

Książka o pozycjonowaniu

Dotacje na e-biznes. Pozyskiwanie środków z UE w ramach PO IG 8.1

Wersja Lo-Fi Aktualny czas: 2.09.10 - 18:26