Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: StringParseToUrl
Forum PHP.pl > Forum > PHP
Lerno
Operacja polegająca na zmianie nazwy np: tytułu newsa na "ładny" url, np:
"Tytuł newsa „tralala” ĄĘÓŁŚŻŹĆŃąęółśżźćń _ - /"
"Tytul-newsa-tralala-AEOLSZXCNaeolszzcn"

Czyli usuwa zbędne spacje, także te na końcu. Do tego pl diakrytyki zmienia na odpowiedniki bez ogonków i innych kresek.
Chciałem się dowiedzieć, czy ktoś może pisał taki parser i może podzielić się rozwiązaniem?
Powyższe znaki są tylko przykładowe bo są przecież jeszcze inne podobne (daszki w czeskim alfabecie i inne)

Jeżeli nie to zastanawiam się jak należało by to napisać.
Zwykłe str_replace nie wyeliminuje nadmiarowych spacji.
Zapewne trzeba by w pętli sprawdzać każdy znak i go zmieniać na odpowiednik dodatkowo sprawdzając czy znak wcześniejszy nie jest już spacją (myślnik) tak aby nie powielać.

Co sądzicie?
wookieb
  1. <?php
  2. $polskie=array('ą', 'Ą', 'ć', 'Ć', 'ę', 'Ę', 'ś', 'Ś', 'ł', 'Ł', 'ń', 'Ń', 'ż', "Ż", 'ź',"Ź", "ó","Ó", ' ');
  3.    $zamienniki=array('a', 'a', 'c', 'c', 'e', 'e', 's', 's', 'l', 'l', 'n', 'n', 'z', 'z', 'z', 'z', "o", 'o', '_');
  4.    $name=trim($name);
  5.    $name=str_replace($polskie, $zamienniki, $name);
  6. ?>


Dla każdego jezyka tworzysz oddzielna tablicę z "ogonkami"

P.s. Sądzimy, że nie czytasz manuala.
wrzasq
dla spacji, lepiej jest uzyc myslnika, tak jak to lerno chcial zrobic, a nie podkreslnika jak to wookieb napisal, gdyz wyszukiwarki czesto podkreslnik traktuja jako jeden wyraz, a myslnik (minus) je rozdziela.
Lerno
@wookieb: pisałem w swoim poście o str_replace. Proste podmienianie znaków raczej nie rozwiązuje problemu nadmiarowych spacji lub innych warunków.

Co w sytuacji gdy chce znak - zamienić na _ a ten znak znajduje się na końcu stringa? Wtedy będę miał -_ zakładając, że spacje podmieniam na -.
Wolał bym taki string ucinać. Lub np: gdy ktoś omyłkowo wstawi 2 spacje.


P.S. Aha, manual nie jest mi obcy.
wookieb
Cytat(Lerno @ 18.12.2008, 17:50:54 ) *
P.S. Aha, manual nie jest mi obcy.


Ależ pewnie, że jest http://pl2.php.net/preg_replace
Poszukaj a znajdziesz odpowiedź jak usunąć nadmiarowe spacje.
Lerno
Faktycznie, regularne wyrażenia będą lepsze niż zabawa pętlą.
Dzięki.

P.S. Ta kpina była zbędna. Teoretycznie w każdym wątku można pisać "zapytaj manuala lub Google".
wookieb
Cytat(Lerno @ 18.12.2008, 20:57:46 ) *
Teoretycznie w każdym wątku można pisać "zapytaj manuala lub Google".


Teoretycznie. Praktycznie nie wszystko jest w manualu. Ale przy rozpoczynanu przygody z php warto jest przeczytać większość manuala.
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.