Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][PP]Jak wyciągnąć tekst pomiędzy " "
Forum PHP.pl > Forum > Przedszkole
Oklejek
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ć?
Pawel_W
masz zły wzorzec, całkowicie mija się z preg_match_all smile.gif

spróbuj tak:
/"([^"]+)"/
b4rt3kk
A może zamiast preg_match podzielić string explode? A później tylko pozbyć się apostrofów?
Pawel_W
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
Oklejek
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];
!*!
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], '"');
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.