Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak wydzielić liczbę ze stringa?
Ziem
post 22.06.2010, 16:15:38
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 29.10.2008

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


Witam!
W jaki sposób wydzielić liczbę ze stringa?
Np.: mam tekst:
"Aktualnie mamy 205 graczy online."

W jaki sposób wyciągnąć z tego tekstu liczbę 205??

Pozdrawiam, Ziem!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
tehaha
post 22.06.2010, 16:18:09
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


najprościej będzie chyba preg_match()

np. tak:
  1. $text = 'Aktualnie mamy 205 graczy online';
  2. preg_match('/([\d]+)/', $text, $match);
  3. print_r($match);



Ten post edytował tehaha 22.06.2010, 16:23:05
Go to the top of the page
+Quote Post
Fifi209
post 22.06.2010, 16:21:32
Post #3





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Jeżeli tekst się nie zmienia (prócz liczby) to możesz substr wyciąć.

o tak:
  1. <?php
  2.  
  3. $string = 'Aktualnie mamy 205 graczy online.';
  4.  
  5. $l = strlen($string);
  6.  
  7. var_dump(substr($string, 15, $l-30));
  8.  
  9.  
  10. ?>


@edit
@up
Cytat(tehaha @ 22.06.2010, 17:18:09 ) *
najprościej będzie chyba preg_match()

np. tak:
  1. $text = 'Aktualnie mamy 205 graczy online';
  2. preg_match('/([\d]+)/', $text, $match);
  3. print_r($match);

Mało optymalnie ;]


Ten post edytował fifi209 22.06.2010, 16:24:42


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Ziem
post 22.06.2010, 16:32:30
Post #4





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 29.10.2008

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


Sam wpadłem na explode():
  1. $arr = explode(" ", $text);


Skoro tekst się nie zmienia to czy ten substr bedzie najwydajniejszy/najlepszy/itd. laugh.gif ?
Go to the top of the page
+Quote Post
Fifi209
post 22.06.2010, 16:35:37
Post #5





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(Ziem @ 22.06.2010, 17:32:30 ) *
Sam wpadłem na explode():
  1. $arr = explode(" ", $text);


Skoro tekst się nie zmienia to czy ten substr bedzie najwydajniejszy/najlepszy/itd. laugh.gif ?


Nie wiem, ale możesz pokusić się o testy w pętli dla np. 10 tysięcy powtórzeń, wyciągając średnią z wyników. ;]


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Ziem
post 22.06.2010, 16:38:35
Post #6





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 29.10.2008

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


Kiedyś może sobie taki tekst wykonam, na razie ważne dla mnie jest aby działało biggrin.gif.
A gdyby długość tekstu była zmienna to zostajemy przy preg_match()/explode(), racja?
Go to the top of the page
+Quote Post
Wicepsik
post 22.06.2010, 17:18:33
Post #7





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


  1. preg_replace('/[^0-9]/', '', $text); // jeśli w tekście jest jedna liczba


--------------------
Go to the top of the page
+Quote Post
Ziem
post 22.06.2010, 18:02:48
Post #8





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 29.10.2008

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


Niestety, liczb jest kilka.

W zmiennej mam parę zdań:
"Aktualnie mamy 205 graczy online. Blabla [...] 22-06-22, i jeszcze jakieś dodatkowe liczby"

Myślałem jeszcze nad tym, aby pobrać pierwsze zdanie do kropki i ciachać jedynie:
"Aktualnie mamy 205 graczy online."


Jednak najłatwiej to zrobić z explode() i wybrać odpowiedni indeks tablicy.

Dzięki wszystkim za odpowiedz biggrin.gif i!
Go to the top of the page
+Quote Post
Lars_18
post 22.06.2010, 18:04:53
Post #9





Grupa: Zarejestrowani
Postów: 63
Pomógł: 11
Dołączył: 29.05.2010

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


Możesz też dodać do wyrażenia regularnego słowo "mamy", bo się powtarza w każdym zdaniu.
Go to the top of the page
+Quote Post
Balor
post 23.06.2010, 14:46:19
Post #10





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 23.06.2010

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


  1. $tab = explode(" ", $string);
  2. foreach ($tab as $t)
  3. {
  4. if(preg_match('/^[0-9]+$/D', $t))
  5. echo $t;
  6. }


--------------------
Bo ludzie myślą, że to takie hop-siup...
programy na zlecenie, oprogramowanie dla firm, aplikacje desktopowe
Go to the top of the page
+Quote Post
red9skull
post 23.06.2010, 16:41:50
Post #11





Grupa: Zarejestrowani
Postów: 157
Pomógł: 0
Dołączył: 11.07.2009
Skąd: root

Ostrzeżenie: (10%)
X----


Cytat(Wicepsik @ 22.06.2010, 18:18:33 ) *
  1. preg_replace('/[^0-9]/', '', $text); // jeśli w tekście jest jedna liczba

Wiesz, że wyrażenie [^0-9] oznacza, że w tekście nie może wystąpić cyfra? Gratulacje.


--------------------
zmoderowano - zbyt fajna
Go to the top of the page
+Quote Post
remik09
post 17.12.2010, 15:47:33
Post #12





Grupa: Zarejestrowani
Postów: 102
Pomógł: 10
Dołączył: 25.12.2005
Skąd: Ruda Śląska

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


nie będę zakładał nowego tematu bo problem ten sam,

mam string:
Kod
index.php?a=kat&amp;id=2


chce w tym wyszukać cyfry, ale na żaden sposób nie chce mi znaleźć, zaczynam się już denerwować bo n-ta ilość wyrażeń regualrnych działa mi jak powinna a tutaj nie umiem wymyśleć dlaczego nic nie działa mi

próbowałem z określaniem jak 0-9 i \d ale nie wiem co źle piszę bo nie działa


--------------------
moj blog z glupotami
darmowe mp3

workstation: zendstudio 5.5.0 | EditPlus 3 | PHP/4.3.9 |
Go to the top of the page
+Quote Post
krowal
post 17.12.2010, 16:12:18
Post #13





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


Cytat(red9skull @ 23.06.2010, 16:41:50 ) *
Wiesz, że wyrażenie [^0-9] oznacza, że w tekście nie może wystąpić cyfra? Gratulacje.


Zdejmij klapki z oczu i popatrz szerzej, ta funkcja wyrzuci z ciągu wszystko co nie jest cyfrą. I co głupio Ci ? winksmiley.jpg


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
Rid
post 17.12.2010, 19:53:36
Post #14





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


Cytat(krowal @ 17.12.2010, 16:12:18 ) *
Zdejmij klapki z oczu i popatrz szerzej, ta funkcja wyrzuci z ciągu wszystko co nie jest cyfrą. I co głupio Ci ? winksmiley.jpg

Sam zdejmi ,albo zacznij czytać od początku i do końca-właśnie taki efekt chciała uzyskać osoba, która założyła ten temat.Uważam że preg_match jest jednym z lepszych sposobów:)

Ten post edytował Rid 17.12.2010, 19:54:30
Go to the top of the page
+Quote Post
bim2
post 17.12.2010, 19:59:59
Post #15





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Cytat(remik09 @ 17.12.2010, 16:47:33 ) *
nie będę zakładał nowego tematu bo problem ten sam,

mam string:
Kod
index.php?a=kat&amp;id=2


chce w tym wyszukać cyfry, ale na żaden sposób nie chce mi znaleźć, zaczynam się już denerwować bo n-ta ilość wyrażeń regualrnych działa mi jak powinna a tutaj nie umiem wymyśleć dlaczego nic nie działa mi

próbowałem z określaniem jak 0-9 i \d ale nie wiem co źle piszę bo nie działa

No tak, w świeta to wróżka przyleci i ze szklanej kuli nam wywróży co napisałeś, żeby znaleźć błąd. A nie, przecież szklana kula się potrzaskała ostatnio, zresztą wróżki nie istnieją.


--------------------
Go to the top of the page
+Quote Post
laresistance
post 2.08.2012, 10:52:27
Post #16





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 18.07.2012

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


a ja mam w striingu coś takiego 2012/05
i chcę aby mi z tego wyrzuciło oddzielnie jako int 2012 oraz oddzielnie jako int 05
Co powinienem zastosować?
Go to the top of the page
+Quote Post
kornel-php
post 2.08.2012, 12:21:04
Post #17





Grupa: Zarejestrowani
Postów: 210
Pomógł: 20
Dołączył: 7.07.2006
Skąd: Krotoszyn

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


http://php.net/manual/en/function.preg-match-all.php


--------------------
:)
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:37