![]() |
![]() |
-Mesajah- |
![]()
Post
#1
|
Goście ![]() |
Witam,
Czy jest jakaś funkcja, która pozwala usuwać wszystkie znaki niealfanumeryczne ze stringa (w celu stworzenia przyjaznego linka) ? Np chciałbym zamienić:
na:
Jak najprościej osiągnąć taki efekt ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj
|
|
|
-mesajah- |
![]()
Post
#3
|
Goście ![]() |
Dzięki, część już jest ok, ale znalazłem jeszcze coś takiego:
Gdy próbuję wywołać tą funkcję:
Dostaje info: Call to undefined function Parse() Dlaczego ? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Skoro tworzysz klasę hUrls to wypadałoby stworzyć obiekt tej klasy. Ewentualnie możesz wywołać to tak:
pod warunkiem, że w kodzie klasy zmienisz Parse na metodę statyczną (jak słusznie zauważył Darko niżej). W przypadku gdy nie zmieniasz kodu klasy użyj konstrukcji z postu niżej. Ten post edytował d3ut3r 2.03.2011, 10:54:28 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
To ja podam Ci złożony gotowiec złożony z nieco przerobionych 2 funkcji biblioteki utf8 i helpera url kohany 2.x (IMG:style_emoticons/default/smile.gif)
|
|
|
-Mesajah- |
![]()
Post
#7
|
Goście ![]() |
Skrypt Theka będzie chyba dobry do utf8- (tego mi brakuje), ale nie zamienia ogonków.
Tak w ogóle jak on działa ? Na co zamienia znaki w utf skoro nie widzę tam drugiej tablicy (tej na które znaki są zamieniane). Ja zmodyfikowałem inny skrypt na swoje potrzeby i wyszło coś takiego:
Może się komuś przyda. Fajnie zamienia praktycznie wszystko na takie linki o jakie chodzi, tylko dlaczego pewne znaki i tak muszę zastępować str_replace (IMG:style_emoticons/default/questionmark.gif) *._ ...to są jakieś specjalne znaki ? Jak w takim razie działa to: Wykrzyknik usunie a nawiasów, gwiazdek, podkreślników nie ? |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Mesajah... Jak widzę nie przyjrzałeś się JAK działa ten kod. Podaje tablicę znaków innych niż a-z, a więc diakrytyki narodowe jako klucze tablicy, a wartości tablicy to znaki na jakie podczas konwersji się zamienia je w str_replace. Stąd nie mam dwóch tablic, a tylko jedną. W str_replace jako argumenty podaję raz array_keys, a raz array_values. Potem usuwam wszystkie inne jakie jeszcze zostały i na koniec wielokrotne wystąpienie separatora czy spacji zastępujemy pojedynczym separatorem. A dla pewności trimujemy string z możliwych separatorów na obu końcach stringa. Co do preg_replace i problemów z niektórymi znakami to może ich nie zaescape'owałeś? * czy . to znaki specjalne wyrażeń regularnych i muszą być poprzedzone znakiem ucieczki by traktował je dosłownie. Ja to "olewam" i usuwam je jako niealfanumeryczne w 8 linii wyrażeniem. A poza tym to chyba masz coś nie tak z parserem, bo podane przez Ciebie na końcu wyrażenie usuwa ze stringa * ( ) _ i inne znaki niealfanumeryczne. Weź zassij choćby regexp editor stąd i sam sprawdź (IMG:style_emoticons/default/smile.gif)
http://www.waterproof.fr/products/RegExpEditor/ |
|
|
-Mesajah- |
![]()
Post
#9
|
Goście ![]() |
No rzeczywiście chyba się za dobrze nie przyjrzałem (późno było), ale teraz już wszystko kapuje.
Nie wiem co z moim parserem, ale musiałem dodać linijki str_replace, żeby mi usunął pewne znaki, bo inaczej nie zamieniał ich. Co do escapowania to nie robiłem tego, nawet nie wiem w którym momencie miałbym to robić, czy w tym kodzie który podałem, czy w jego argumentach (a tego raczej już bym nie chciał zmieniać). Spróbuje zastąpić moją regułę: Tą której Ty używasz: Aczkolwiek dziwne, że ta moja nie usuwa tego co powinna, skoro mówisz, że u Ciebie nie ma z tym problemu... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 14:49 |