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:52Trzecia 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, ' ','-');