Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Wyciąganie danych ze stringa pomiędzy znakami
majesgrudziadz
post
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 1.02.2012

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


Witam mam taki problem.

Pobieram informację z nazwy pliku które różnią się długością.
Przykłady plików:

20120803_0854_ussr-KV-5_23_westfeld.wotreplay
20120803_0921_usa-T30_28_desert.wotreplay
20120726_0816_usa-T28_Prototype_41_westfeld.wotreplay
20120802_1344_ussr-T_50_2_38_mannerheim_line.wotreplay

robę na nazwie pliku explode i wyciągam $row[0] i $row[1]

  1. $row[0] - data
  2. $row[1] - godzina


liczę ilość $row i wyciągam ostatniego w przypadku gdy jest to line itp to wyciągam dodatkowo przedostatniego co daje mi:
$row[ostatni] - nazwa mapy
$row[przedostatni] - nazwa mapy

Fragment kodu:
  1. $plik_nazwa = $_FILES['plik']['name']; //dodaje nazwe do zmiennej
  2.  
  3. $roz = explode(".",$plik_nazwa); // wycinam rozszerzenie pliku
  4. $opis_pliku = explode("_",$roz[0]); //dziele opis pliku wg podkreslnika
  5.  
  6. $ile = count($opis_pliku); // licze ile jest explodow
  7. $ileminus = $ile - 1; // odejmuje 1 by byl to ostatni gdyz liczy od 1 w gore a explode daje do tablicy od 0 w gore
  8. $mapa = $opis_pliku[$ileminus]; // wyciagam ostatni explode
  9.  
  10. if(($mapa == 'a') OR ($mapa == 'ridge') OR ($mapa == 'bay') OR ($mapa == 'river') OR ($mapa == 'coast') OR ($mapa == 'halluf') OR ($mapa == 'region') OR ($mapa == 'pass') OR ($mapa == 'oaks') OR ($mapa == 'line')){
  11. $ileminus2 = $ile - 2;
  12. $mapa2 = $opis_pliku[$ileminus2];
  13.  
  14. $mapaw = $mapa2.' '.$mapa;
  15. }else{
  16. $mapaw = $mapa;
  17. }


Teraz problem leży w nazwie czołgu gdyż ma on przeróżne nazwy. Chciałbym wyciągnąć z nazwy pliku znaki które znajdują się po pierwszym znaku - a kończą się przed znakami "cyfra,cyfra,podkreślnik"


Czy może ktoś mi podpowiedzieć jak to zrobić ? czytałem manuale itp ale nie mogę sobie poradzić gdyż scrypty php ostatni raz pisałem 6 lat temu (IMG:style_emoticons/default/smile.gif)

Z góry dziękuję za odpowiedzi nie odsyłające mnie do www.google.pl

Ten post edytował majesgrudziadz 19.09.2012, 09:29:39
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Tu idealnie nadają się wyrażenia regularne
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #3





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


To bardzo prosta sprawa, musisz użyć preg_split, oczywiście z odpowiednim wyrażeniem regularnym.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie preg_split a preg_match. Autor wątku chce wyciągnąć srodek
Go to the top of the page
+Quote Post
majesgrudziadz
post
Post #5





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 1.02.2012

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


wszystko fajnie pięknie poczytałem o preg_match() ale chyba jestem za tempy (IMG:style_emoticons/default/smile.gif)

mogę prosić o jakiś przykład z sensownym opisem ?
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
tempy

tępy
(IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
majesgrudziadz
post
Post #7





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 1.02.2012

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


Cytat(nospor @ 19.09.2012, 11:18:47 ) *


Tak wiem celowo to napisałem aby podkreślić fakt iż nie mogę sobie poradzić ... zaczynam kombinować z str_replace('JAKIES ZNAKI',''>',$opis_pliku); ale nie wiem cyz ide w dobrym kierunku
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #8





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


  1. $string = '20120803_0854_ussr-KV-5_23_westfeld.wotreplay';
  2.  
  3. preg_match("/-.*\_[0-9]{2}/", $string, $matches);
  4.  
  5. print_r($matches);
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
ale nie wiem cyz ide w dobrym kierunku
No nie idziesz w dobrym kierunku. Napisaliśmy ci, że najlepszym kierunkiem są wyrażenia regularne oraz preg_match().
Go to the top of the page
+Quote Post
majesgrudziadz
post
Post #10





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 1.02.2012

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


Cytat(b4rt3kk @ 19.09.2012, 11:26:33 ) *
  1. $string = '20120803_0854_ussr-KV-5_23_westfeld.wotreplay';
  2.  
  3. preg_match("/-.*\_[0-9]{2}/", $string, $matches);
  4.  
  5. print_r($matches);


Sprawdzałeś to co mi podałeś ?

Ja byłem ciekaw co twój kod pokaże ... hmm pokazał blank page

Zacząłem kombinować ze splitem dlatego, że mój przykład również zwracał czystą stronę

Ten post edytował majesgrudziadz 19.09.2012, 10:37:51
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #11





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Cytat(majesgrudziadz @ 19.09.2012, 11:36:35 ) *
Sprawdzałeś to co mi podałeś ?

Ja byłem ciekaw co twój kod pokaże ... hmm pokazał blank page

Zacząłem kombinować ze splitem dlatego, że mój przykład również zwracał czystą stronę


Tak sprawdzałem, może wsadź to pomiędzy <?php ... ?> ? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #12





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




  1. <?php
  2.  
  3. $subject = "20120803_0854_ussr-KV-5_23_westfeld.wotreplay";
  4. $pattern = '/-.*\_[0-9]{2}/';
  5. preg_match($pattern, $subject, $matches);
  6. print_r($matches);
  7.  
  8. ?>

Cytat
Array ( [0] => -KV-5_23 )

Więc działa (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
majesgrudziadz
post
Post #13





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 1.02.2012

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


Cytat(b4rt3kk @ 19.09.2012, 11:38:27 ) *
Tak sprawdzałem, może wsadź to pomiędzy <?php ... ?> ? (IMG:style_emoticons/default/smile.gif)



Za głupka mnie uważasz ? heh dobre to było ... ale nie działa może mój serwer coś nie trybi pod względem PHP.5.0.3 ?
Go to the top of the page
+Quote Post
konole
post
Post #14





Grupa: Zarejestrowani
Postów: 275
Pomógł: 32
Dołączył: 21.03.2006
Skąd: Warszawa

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


Cytat(majesgrudziadz @ 19.09.2012, 09:53:30 ) *
Za głupka mnie uważasz ?
tak, innym działa.
Go to the top of the page
+Quote Post
majesgrudziadz
post
Post #15





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 1.02.2012

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


Cytat(Kshyhoo @ 19.09.2012, 11:42:42 ) *
  1. <?php
  2.  
  3. $subject = "20120803_0854_ussr-KV-5_23_westfeld.wotreplay";
  4. $pattern = '/-.*\_[0-9]{2}/';
  5. preg_match($pattern, $subject, $matches);
  6. print_r($matches);
  7.  
  8. ?>


Więc działa (IMG:style_emoticons/default/smile.gif)


No faktycznie działa .... w twoim jak i w moim kodzie miałem błąd (IMG:style_emoticons/default/smile.gif)

ale problem polega na tym że pierwszy znak minusa również musi uciąć ... ale to już sobie poradzę

moim problemem i błędem było to że nie dawałem w preg_match $wynik u ciebie $matches na końcu nigdzie nie doczytałem do czego to jest a teraz już wiem (IMG:style_emoticons/default/smile.gif)
człowiek uczy się na błędach dobrze że te błedy rozumie (IMG:style_emoticons/default/wink.gif)

na końcu zamiast print_r dałem echo $wynik[0]; i jest gitarka

pozdro

temat do zamknięcia


Cytat(konole @ 19.09.2012, 12:09:33 ) *
tak, innym działa.


sam jesteś głupek ... ludzi nie obrażaj człowieku .... a mogę nazwać cię debilem ? gdyż nic nowego ani sensownego do tematu nie wniosłeś ?



Kshyhoo - oczywiście kliknąłem POMÓGŁ

Ten post edytował majesgrudziadz 19.09.2012, 11:14:38
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #16





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


A ja to nie pomogłem? Identyczny przykład dałem. lol. (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #17





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Cytat(b4rt3kk @ 19.09.2012, 13:15:24 ) *
A ja to nie pomogłem? Identyczny przykład dałem. lol. (IMG:style_emoticons/default/biggrin.gif)

Mam zadatki na polityka, umiem przywłaszczać sobie czyjeś zasługi (IMG:style_emoticons/default/specool.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #18





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




majesgrudziadz również nadaje się na polityka - nie widzi od kogo idą dobre idee, przez co nie nagradza tych co trzeba tylko rozdaje stołki kolesiom (IMG:style_emoticons/default/wink.gif)

Na szczęście mamy prezesa (mnie) który sprowadzi do parteru złych polityków (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
majesgrudziadz
post
Post #19





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 1.02.2012

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


Cytat(b4rt3kk @ 19.09.2012, 13:15:24 ) *
A ja to nie pomogłem? Identyczny przykład dałem. lol. (IMG:style_emoticons/default/biggrin.gif)


Żeby było śmieszniej (IMG:style_emoticons/default/smile.gif) dałem tobie a nie Kshyhoo (IMG:style_emoticons/default/smile.gif)

Tzn dałem b4rt3kk a napisałem że dałem Kshyhoo (IMG:style_emoticons/default/smile.gif)

Teraz macie oboje (IMG:style_emoticons/default/smile.gif)

Pozdrawiam
Go to the top of the page
+Quote Post
nospor
post
Post #20





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Żeby było śmieszniej dałem tobie a nie Kshyhoo

Tzn dałem b4rt3kk a napisałem że dałem Kshyhoo
No właśnie nie.... przeczytaj parę ostatnich postów, w szczególności mój a następnie wyciągnij wnioski co się mogło stać... (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 15.09.2025 - 17:37