Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][PP]Jak wyciągnąć tekst pomiędzy " "
Oklejek
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 30.01.2012

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


Witam, otóż mój problem polega na tym, że nie mogę sobie poradzic z funkcją preg_match_all, mianowicie mam cos takiego
  1. $tablica[1] = '"wartosc1" "wartosc2" "wartosc3" "wartosc4"';
  2. preg_match_all('/"(.*?)" "(.*?)" "(.*?)" "(.*?)"/', $tablica[1], $result);

Co tutaj jest źle i jak to naprawić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Pawel_W
post
Post #2





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


masz zły wzorzec, całkowicie mija się z preg_match_all smile.gif

spróbuj tak:
/"([^"]+)"/
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%)
-----


A może zamiast preg_match podzielić string explode? A później tylko pozbyć się apostrofów?


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
Pawel_W
post
Post #4





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


Cytat(b4rt3kk @ 30.09.2012, 11:53:43 ) *
A może zamiast preg_match podzielić string explode? A później tylko pozbyć się apostrofów?

może nie wynajdujmy koła na nowo? wyrażenia regularne po to powstały żeby z nich korzystać smile.gif
Go to the top of the page
+Quote Post
Oklejek
post
Post #5





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 30.01.2012

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


Cytat(Pawel_W @ 30.09.2012, 11:53:19 ) *
masz zły wzorzec, całkowicie mija się z preg_match_all smile.gif

spróbuj tak:
/"([^"]+)"/

Działa na preg_replace, ale niestety zwraca całą linie, a ja chce pobrać wszystkie 4 oddzielnie. Między "" mogą wystąpić spacje, więc explode nie zadziała.

EDIT:
Dobra, jakoś sobie poradziłem... zamieniłem " na [;spacja] i wykonałem explode.
  1. $tekst = preg_replace('/"/', '[;spacja]', $tablica[$i]);
  2. $t = explode('[;spacja]',$tekst);
  3. $nick = $t[1];
  4. $haslo = $t[3];
  5. $flagidostepu = $t[5];
  6. $flagikonta = $t[7];


Ten post edytował Oklejek 30.09.2012, 11:36:04
Go to the top of the page
+Quote Post
!*!
post
Post #6





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat(Oklejek @ 30.09.2012, 12:24:41 ) *
Działa na preg_replace, ale niestety zwraca całą linie, a ja chce pobrać wszystkie 4 oddzielnie. Między "" mogą wystąpić spacje, więc explode nie zadziała.

Zadziała, bo pomiędzy nimi jest spacja, później przez trim usuwasz " i masz wynik.


  1. $subject = '"wartosc1" "wartosc2" "wartosc3" "wartosc4"';
  2. $pattern = '/\"[a-z0-9]+\"/';
  3.  
  4. preg_match_all($pattern, $subject, $match);
  5.  
  6. echo '<pre>';
  7. print_r($match);
  8. echo trim($match[0][2], '"');


Ten post edytował !*! 30.09.2012, 11:45:12


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
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 Aktualny czas: 21.08.2025 - 06:24