![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 313 Pomógł: 5 Dołączył: 22.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam wyleciało mi z głowy jak nazywa się funkcja do wycinania znaków z końca gdy napotka znak podany w funkcji.
Chcę osiągnąć. link index.php?kategoria=true&site_no=2 lub index.php?kategoria=true&site_no=99 sprowadzić do postaci index.php?kategoria=true&site_no Za wszelką pomoc z góry dzięki. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków ![]() |
w takim razie potrzebne Ci będzie explode bo znaki na końcu mogą być różniej długości.
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 313 Pomógł: 5 Dołączył: 22.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
-------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 562 Pomógł: 15 Dołączył: 8.08.2003 Skąd: Denmark/Odense Ostrzeżenie: (0%) ![]() ![]() |
Pyro, nie chcę podważać, ale czy on na prawdę potrzebuje zaprzęgać do pracy wujka regexa w tym dość prostym przypadku? IMO jego rozwiązanie jest prostsze.
-------------------- Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Pyro, nie chcę podważać, ale czy on na prawdę potrzebuje zaprzęgać do pracy wujka regexa w tym dość prostym przypadku? IMO jego rozwiązanie jest prostsze. A czy ten regex jest skomplikowanym przypadkiem? -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 8 Dołączył: 20.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ale to wytnie wszystkie wystąpienia, nie tylko ostatnie. Powinno być (dolar na końcu):
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 374 Pomógł: 149 Dołączył: 1.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
i nie + (maksymalistyczny)
tylko +? (minimalistyczny) -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 8 Dołączył: 20.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Ale to wytnie wszystkie wystąpienia, nie tylko ostatnie. Powinno być (dolar na końcu):
Och, zdawało mi się że go dałem na końcu, jednak autor podał konkretną sytuację w ktorej i tak nie mialoby to wiekszego znaczenia i nie + (maksymalistyczny) tylko +? (minimalistyczny) (zgodnie z poprzednikiem) Niby dlaczego? Ten post edytował pyro 4.11.2008, 17:30:22 -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 374 Pomógł: 149 Dołączył: 1.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dlaczego? Dla porządku, choć w zasadzie przy założeniu że wycinamy tylko [0-9] nie ma to znaczenia. Gdybyś jednak chciał wyciąć wszystkie znaki znajdujące się za ostatnim znakiem równości i nie dał byś ograniczenia że to będą tylko cyfry to różnica między + a +? jest kolosalna, bo ten pierwszy wytnie wtedy wszystko co znajduje się między pierwszym znakiem równości a końcem linii a ten drugi wytnie wszystko co znajduje się między ostatnim znakiem równości a końcem linii. Taka jest różnica między maksymalistycznym a minimalistycznym kwantyfikatorem i lepiej od razu się do tego przyzwyczajać i nabierać dobrych nawyków. Ten post edytował JoShiMa 4.11.2008, 17:34:06 -------------------- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 562 Pomógł: 15 Dołączył: 8.08.2003 Skąd: Denmark/Odense Ostrzeżenie: (0%) ![]() ![]() |
Pyro, nie chodzi mi o flame'a, ani o twojego regexa (który jest zrozumiały i w porządku) chodzi mi o fakt zaprzęgania silnika wyrażeń regularnych do bardzo prostej operacji na nieskomplikowanym stringu. IMO jeśli możesz coś zrobić funkcjami str* bez stawania na głowie powinieneś to zrobić funkcjami str*. Ale whatever floats your boat.
-------------------- Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 374 Pomógł: 149 Dołączył: 1.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
[IMO jeśli możesz coś zrobić funkcjami str* bez stawania na głowie powinieneś to zrobić funkcjami str*. Jakoś tak się ciągle słyszy, że preg_i są szybsze. Ale tam zaraz flame. Merytoryczna dyskusja się rozwinęła. Niech się przedszkolaki uczą ![]() Ten post edytował JoShiMa 4.11.2008, 17:36:03 -------------------- |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Pyro, nie chodzi mi o flame'a, ani o twojego regexa (który jest zrozumiały i w porządku) chodzi mi o fakt zaprzęgania silnika wyrażeń regularnych do bardzo prostej operacji na nieskomplikowanym stringu. IMO jeśli możesz coś zrobić funkcjami str* bez stawania na głowie powinieneś to zrobić funkcjami str*. Ale whatever floats your boat. bregovic, chciałem jeszcze dodać, że autor powiedział, że szuka innego rozwiązania poza tym, które podał. ![]() [offtopic] Joshima, n/c, jak juz mnie nazywasz przedszkolakiem, to chociaz przedszkolakiem chodzącym do zerówki ![]() [/offtopic] Ten post edytował pyro 4.11.2008, 17:39:09 -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 562 Pomógł: 15 Dołączył: 8.08.2003 Skąd: Denmark/Odense Ostrzeżenie: (0%) ![]() ![]() |
Fakt, I seize my case - czepialski jestem z poranka
![]() -------------------- Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 8 Dołączył: 20.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dla porządku, choć w zasadzie przy założeniu że wycinamy tylko [0-9] nie ma to znaczenia. Gdybyś jednak chciał wyciąć wszystkie znaki znajdujące się za ostatnim znakiem równości i nie dał byś ograniczenia że to będą tylko cyfry to różnica między + a +? jest kolosalna, bo ten pierwszy wytnie wtedy wszystko co znajduje się między pierwszym znakiem równości a końcem linii a ten drugi wytnie wszystko co znajduje się między ostatnim znakiem równości a końcem linii. Taka jest różnica między maksymalistycznym a minimalistycznym kwantyfikatorem i lepiej od razu się do tego przyzwyczajać i nabierać dobrych nawyków. O tym wiem, tylko wydawało mi się, że w tym przypadku to nieistotne. Ale nie wiedziałem, że da się to tak zrobić - za pomocą operatora +? - myślałem, że steruje się tym tylko za pomocą modyfikatorów wzorców (U (PCRE_UNGREEDY)). Ale teraz widzę, że to po prostu zamienia maksymalistyczny na minimalistyczny i odwrotnie. Ale faktycznie regexp do czegoś takiego jest chyba być trochę przesadzony i rozwiązanie z substr i strrpos jest najlepsze. |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 1 374 Pomógł: 149 Dołączył: 1.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
[offtopic] Joshima, n/c, jak juz mnie nazywasz przedszkolakiem, to chociaz przedszkolakiem chodzącym do zerówki ![]() [/offtopic] [offtopic] Przecież nie Ciebie tylko ewentualnie autora wątku i innych szukających tu wiedzy ![]() [/offtopic] Ten post edytował JoShiMa 4.11.2008, 17:41:36 -------------------- |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 8 Dołączył: 20.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Szybsze of ereg_, ale czy szybsze od str* ? a jak ty tu chcesz uzyc str* ? -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 562 Pomógł: 15 Dołączył: 8.08.2003 Skąd: Denmark/Odense Ostrzeżenie: (0%) ![]() ![]() |
JoShiMa, co prawda to off-top, ale w moim doświadczeniu, dla prostych operacji na stringach funkcje str* są szybsze. Z odrobiną wyrafinowania, i dużą ilością manual-foo można z nimi zajść bardzo daleko. Poza tym:
Cytat(http://en.wikiquote.org/wiki/Jamie_Zawinski) Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems. ![]() Ten post edytował bregovic 4.11.2008, 18:05:46 -------------------- Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 23:21 |