Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Usuwanie niechcianych znaków
Forum PHP.pl > Forum > PHP
deha21
Potrzebuję do ładnych linków zrobić nazwe tytułu, czyli: www.stronka.pl/news,123,tytul-jakis-fajniutki.html

Do tej pory miałem to trochę upośledzone winksmiley.jpg
  1. $pattFrom = array('Ę','ę','Ó','ó','Ł','ł','Ś','ś','Ą','ą','Ż','ż','Ź','ź','Ć','ć','Ń','ń');
  2. $pattTo = array('e','e','o','o','l','l','s','s','a','a','z','z','z','z','c','c','n','n');
  3.  
  4. $polskie=str_replace($pattFrom,$pattTo,$row['title']);
  5. $space=trim(strtr($polskie," -?!:()@$%.\,\"", "--_____________"),"_-");
  6.  
  7. echo "<a href='news,".$row['id'].",".strtolower($space).".html'>".stripslashes($row['title'])."</a>";
  8.  
  9. }

Usuwa polskie znaki ale jeśli jest np. cudzysłów czy łącznik to robi _ . W sumie się nie dziwię bo tak ustawiłem ale tylko dlatego że nie wiedziałem jak to całkiem usunąć. Byłem zajęty i dopiero teraz mi się wspomniało że wypadałoby to naprawić winksmiley.jpg
deha21
Super fajne to masz ale zamiast zmieniać polskie znaki to mi je całkiem usuwa. I np. łącznika mi zostawia a chciałbym żeby też go usuwało. Przecinki usuwa prawidłowo ale kropki też zostawia.
everth
  1. function convertTitle($string) {
  2. $aWhat = array('ą','ć','ę','ł','ó','ń','ś','ż','ź',' ');
  3. $aOn = array('a','c','e','l','o','n','s','z','z','_');
  4. $converted = preg_replace('/[^a-zA-Z0-9_]*/','',str_ireplace($aWhat, $aOn, $string));
  5. return $converted;
  6. }

@deha21 i z tego samego powodu nie kocham iconv();
deha21
O dzięki. Trochę sobie ulepszyłem. Zamiana na małe litery, zamiast spacji "-" a tekst "Bla bla bla - coś tam coś" przekonwertuje na "bla-bla-bla-coś-tam-coś" czyli potrójne "---" które by się wtedy tworzyło też znika. Super! biggrin.gif
  1. function conv($string) {
  2. $aWhat = array('ą','ć','ę','ł','ó','ń','ś','ż','ź',' ');
  3. $aOn = array('a','c','e','l','o','n','s','z','z','-');
  4. $string = str_replace(" - "," ",$string);
  5. $converted = preg_replace('/[^a-zA-Z0-9-]*/','',str_ireplace($aWhat, $aOn, $string));
  6. return strtolower($converted);
  7. }

erix
Cytat
Super fajne to masz ale zamiast zmieniać polskie znaki to mi je całkiem usuwa.

Z jakiej paki? tongue.gif To akurat kawałek z mojego frameworka, gdzie w tej chwili ta funkcja się pewnie wykonała z kilka razy. tongue.gif
deha21
Nie wiem z jakiej paki ale mi usuwało winksmiley.jpg Może coś z serwerem albo wersją php że nie działa tak jak powinno?
everth
@erix: Też chciałbym wiedzieć - jak potrzebowałem transliteracji to na początku oparłem się na iconv() - niestety po aktualizacji mojego Kubunciaka do Lucid przestało działać prawidłowo (zaczęło wycinać znaki). Może to problem leżącej pod spodem biblioteki libiconv - ja niestety nie mogę sobie pozwolić na to że działanie funkcji zależy od konfiguracji serwera.
erix
Jeszcze nie spotkałem się z taką sytuacją, w której nie działała transliteracja...

Jeśli instalujesz PHP z paczek - wcale się nie dziwię. Ale paczkowanego PHP nie uznaję w swojej teorii istnienia świata. tongue.gif
everth
Teraz trochę poczytałem i właściwie całkowicie zgłupiałem - to rozwiązanie działa mi w trybie interaktywnej konsoli a za nic w świecie nie działa jako skrypt. Z komentarzy pod, wynika że nie tylko ja uświadczyłem podobnych problemów. W każdym razie chyba bezpieczniej jest stosować własne tablice transliteracji.

[offtop]
Co do PHPa to sugerujesz mi kompilację każdego nowego wydania? Gentoo skutecznie zniechęciło mnie do wyznawców tej sekty - są w życiu ciekawsze rzeczy niż obserwacja procesu kompilacji biggrin.gif. Zresztą Debian rządzi.
[/offtop]
erix
Cytat
Teraz trochę poczytałem i właściwie całkowicie zgłupiałem - to rozwiązanie działa mi w trybie interaktywnej konsoli a za nic w świecie nie działa jako skrypt. Z komentarzy pod, wynika że nie tylko ja uświadczyłem podobnych problemów. W każdym razie chyba bezpieczniej jest stosować własne tablice transliteracji.


Cóż, możliwe że obie instancje korzystają z innych plików konfiguracyjnych bądź pochodzą z innych paczek (zdarza się winksmiley.jpg).

Cytat
Co do PHPa to sugerujesz mi kompilację każdego nowego wydania? Gentoo skutecznie zniechęciło mnie do wyznawców tej sekty - są w życiu ciekawsze rzeczy niż obserwacja procesu kompilacji

Szkoda Ci 10 minut? Zwłaszcza, gdy sobie zapiszesz gdzieś konfigurację i skrypt podmiany binarek, to praktycznie przezroczyście...

Już nieraz były przypadki na forum, że działy się cyrki w paczkowanym PHP, a w skompilowanym śmigało jak rakieta. Z praktyki również tak wyszło.

Cytat
są w życiu ciekawsze rzeczy niż obserwacja procesu kompilacji

Owszem, dlatego nie mówię, że trzeba wszystko kompilować. winksmiley.jpg Tylko httpd i PHP, reszta może być z binarek.

Cytat
Zresztą Debian rządzi.

Przesiadłem się jakiś czas temu na FreeBSD na serwerach i od momentu, gdy poznałem uroki systemu portów, świat stał się piękniejszy. winksmiley.jpg
everth
Sprawa się wyjaśniła... chyba. W konsoli miałem ustawione kodowanie na ISO-8859-2. Może dlatego działało. Nie chce mi się dłużej w tym grzebać, kiedyś tak namieszałem z kodowaniem że system nie wstał.

Hmm, przyznam się bez bicia że nie kompilowałem PHPa, dopiero później naszła mnie refleksja że przecież sam interpreter nie musi być szczególnie duży i rzeczywiście 10MB to mniej niż cała biblioteka Qt. Więc mówisz 10min? Jak znajdę trochę czasu i obczaję checkinstall to spróbuję pobawić się w budowanie własnych paczek (dla czystości w systemie).

Z FreeBSD na serwerach ok. Tylko ja mówię o localhoście biggrin.gif. Niespecjalnie widzi mi się działanie FreeBSD na laptopie, a wirtualizacja dla czegoś takiego to przesada.
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.