13.01.2013 o 0:38

[PHP] Usuwanie i zamiana polskich znaków na zwykłe, bez ogonków

Siemka wszystkim po długiej przerwie :)

Chciałbym zaprezentować dwa kody, które pozwolą usunąć z naszego ciągu znaków tzw. treści jakiś polskie znaki, a raczej zamienić je na znaki bez ogonków, czyli do wykorzystania podczas tworzenia np. linków lub identyfikatora o danej nazwie dla bazy danych itd.

Po prostu chcesz zmienić polskie znaki na znaki bez ogonków / zwykłe? To dobrze trafiłeś poniżej pokażę ci dwa kody, jeden z nich powinien zadziałać:
$alias = 'ĘÓĄŚŁŻŹĆŃęóąśłżźćń'; //przykładowy tekst

$alias= strtolower($alias);
$alias = str_replace(' ', '-', $alias);
$alias = str_replace(array('ą', 'ć', 'ę', 'ł', 'ń', 'ó', 'ś', 'ź', 'ż'), array('a', 'c', 'e', 'l', 'n', 'o', 's', 'z', 'z'), $alias);
$alias = preg_replace('/[^0-9a-z\-]+/', '', $alias);
$alias = preg_replace('/[\-]+/', '-', $alias);
$alias= trim($alias,'-');


$alias = str_replace(array(',', ':', ';', ' '), array('', '', '', '-'), $alias);

echo $alias;
i
$alias = 'ĘÓĄŚŁŻŹĆŃęóąśłżźćń'; //przykładowy tekst

$alias= strtolower($alias);
$alias = str_replace(' ', '-', $alias);

$alias = strtr($alias, 'ęóąśłżźćń', 'eoaslzzcn');
$alias = strtr($alias, 'ˇ¦¬±¶Ľ','ASZasz');

$alias = preg_replace('/[^0-9a-z\-]+/', '', $alias);
$alias = preg_replace('/[\-]+/', '-', $alias);
$alias= trim($alias,'-');

$alias = strtr($alias, ' ','-');

echo $alias;

A jeszcze krótkie wyjaśnienie co daje ten fragment:
$alias= strtolower($alias);
$alias = str_replace(' ', '-', $alias);
$alias = preg_replace('/[^0-9a-z\-]+/', '', $alias);
$alias = preg_replace('/[\-]+/', '-', $alias);
$alias= trim($alias,'-');

Ten fragment służy do:
strtolower($alias); - zmiany liter na małe
str_replace(' ', '-', $alias); - zamienia spację na "-"
preg_replace('/[^0-9a-z\-]+/', '', $alias); - usuwa wszystkie znaki oprócz liter i cyrf
preg_replace('/[\-]+/', '-', $alias); - zapomniałem, ale chyba chodziło o to że jeśli jest więcej niż jeden "-" obok siebie to zamienia wszystkie za jeden
trim($alias, '-'); - usuwa puste znaki , coś jak spacje i zamienia je na "-"

Jeśli okaże się, że macie jakiś problem z tymi skryptami dajcie znać na email.

Aktualizacja 5.03.2014 o 13:52

Trzecia wersja:
$tekst = strtolower($tekst);
$tekst = str_replace(array('ą', 'ć', 'ę', 'ł', 'ń', 'ó', 'ś', 'ź', 'ż'), array('a', 'c', 'e', 'l', 'n', 'o', 's', 'z', 'z'), $tekst);
$tekst = trim($tekst,'-');
$tekst = preg_replace('/[\-]+/', '-', $tekst);
$tekst = preg_replace('/[^0-9a-z-]/', '', $tekst);
echo $tekst;



Aktualizacja 17.11.2016 o 17:14
Czwarta wersja:
$alias = strtolower($alias);
$alias = str_replace(' ', '-', $alias);
$alias = preg_replace('/[^0-9a-ąćęłńóśźż\-]+/', '', $alias);

$alias = preg_replace('/[\-]+/', '-', $alias);
$alias= trim($alias,'-');
$alias = str_replace(array('ą', 'ć', 'ę', 'ł', 'ń', 'ó', 'ś', 'ź', 'ż'), array('a', 'c', 'e', 'l', 'n', 'o', 's', 'z', 'z'), $alias);
$alias = str_replace(array(',', ':', ';', ' '), array('', '', '', '-'), $alias);
$alias = strtr($alias, ' ','-');

Komentarze
© 2010 - 2018 - Karol Drąg
Wszelkie prawa zastrzeżone
Polityka plików cookies