Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Obcięcie znaków z końca
mefjiu
post
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.
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
piotrooo89
post
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.


--------------------
Go to the top of the page
+Quote Post
mefjiu
post
Post #3





Grupa: Zarejestrowani
Postów: 313
Pomógł: 5
Dołączył: 22.03.2005

Ostrzeżenie: (0%)
-----


Jeżeli ktoś zna prostrze rozwiązanie od tego:
  1. <?php
  2. echo substr($adres,0,strRpos($adres, "="));
  3. ?>

to prosze pisać
Go to the top of the page
+Quote Post
pyro
post
Post #4





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $replaced = preg_replace('|=[0-9]+|', '', $adres );
  3. ?>


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
bregovic
post
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
Go to the top of the page
+Quote Post
pyro
post
Post #6





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


Cytat(bregovic @ 4.11.2008, 16:49:35 ) *
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
Go to the top of the page
+Quote Post
michalg
post
Post #7





Grupa: Zarejestrowani
Postów: 122
Pomógł: 8
Dołączył: 20.10.2008

Ostrzeżenie: (0%)
-----


Cytat(pyro @ 4.11.2008, 12:06:48 ) *
  1. <?php
  2. $replaced = preg_replace('|=[0-9]+|', '', $adres );
  3. ?>


Ale to wytnie wszystkie wystąpienia, nie tylko ostatnie. Powinno być (dolar na końcu):

  1. <?php
  2. $replaced = preg_replace('|=[0-9]+$|', '', $adres );
  3. ?>
Go to the top of the page
+Quote Post
JoShiMa
post
Post #8





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


i nie + (maksymalistyczny)
tylko +? (minimalistyczny)


--------------------
Go to the top of the page
+Quote Post
michalg
post
Post #9





Grupa: Zarejestrowani
Postów: 122
Pomógł: 8
Dołączył: 20.10.2008

Ostrzeżenie: (0%)
-----


Cytat(JoShiMa @ 4.11.2008, 17:25:08 ) *
i nie + (maksymalistyczny)
tylko +? (minimalistyczny)


Dlaczego?
Go to the top of the page
+Quote Post
pyro
post
Post #10





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


Cytat(michalg @ 4.11.2008, 17:20:37 ) *
Ale to wytnie wszystkie wystąpienia, nie tylko ostatnie. Powinno być (dolar na końcu):

  1. <?php
  2. $replaced = preg_replace('|=[0-9]+$|', '', $adres );
  3. ?>

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

Cytat(JoShiMa @ 4.11.2008, 17:25:08 ) *
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
Go to the top of the page
+Quote Post
JoShiMa
post
Post #11





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


Cytat(michalg @ 4.11.2008, 19:26:36 ) *
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


--------------------
Go to the top of the page
+Quote Post
bregovic
post
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
Go to the top of the page
+Quote Post
JoShiMa
post
Post #13





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


Cytat(bregovic @ 4.11.2008, 19:33:43 ) *
[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ą tongue.gif

Ten post edytował JoShiMa 4.11.2008, 17:36:03


--------------------
Go to the top of the page
+Quote Post
pyro
post
Post #14





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


Cytat(bregovic @ 4.11.2008, 17:33:43 ) *
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ł. smile.gif

[offtopic]
Joshima, n/c, jak juz mnie nazywasz przedszkolakiem, to chociaz przedszkolakiem chodzącym do zerówki smile.gif
[/offtopic]

Ten post edytował pyro 4.11.2008, 17:39:09


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
bregovic
post
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 winksmiley.jpg


--------------------
Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica
Go to the top of the page
+Quote Post
michalg
post
Post #16





Grupa: Zarejestrowani
Postów: 122
Pomógł: 8
Dołączył: 20.10.2008

Ostrzeżenie: (0%)
-----


Cytat(JoShiMa @ 4.11.2008, 17:33:24 ) *
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.
Go to the top of the page
+Quote Post
JoShiMa
post
Post #17





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


Cytat(pyro @ 4.11.2008, 19:36:32 ) *
[offtopic]
Joshima, n/c, jak juz mnie nazywasz przedszkolakiem, to chociaz przedszkolakiem chodzącym do zerówki smile.gif
[/offtopic]


[offtopic]
Przecież nie Ciebie tylko ewentualnie autora wątku i innych szukających tu wiedzy tongue.gif
[/offtopic]

Ten post edytował JoShiMa 4.11.2008, 17:41:36


--------------------
Go to the top of the page
+Quote Post
michalg
post
Post #18





Grupa: Zarejestrowani
Postów: 122
Pomógł: 8
Dołączył: 20.10.2008

Ostrzeżenie: (0%)
-----


Cytat(JoShiMa @ 4.11.2008, 17:35:25 ) *
Jakoś tak się ciągle słyszy, że preg_i są szybsze.


Szybsze of ereg_, ale czy szybsze od str* ?
Go to the top of the page
+Quote Post
pyro
post
Post #19





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


Cytat(michalg @ 4.11.2008, 17:44:34 ) *
Szybsze of ereg_, ale czy szybsze od str* ?


a jak ty tu chcesz uzyc str* ?


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
bregovic
post
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.

winksmiley.jpg

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
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 23:21