Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Wyrażenia regularne] Wszystkie znaki za wyjątkiem jakiegoś
Forum PHP.pl > Forum > Przedszkole
wojckr
Witam,

może Wy będziecie w stanie mi pomóc.
Mam taki string
  1. <?php
  2. $str='"abc def" "ghi jkl"';
  3. ?>

Chcę wyciągnąć z niego wszystkie znaki zawierające się pomiędzy ", za wyjątkiem "
Próbuję tak:
  1. <?php
  2. preg_match('/".*"/',$str,$match);
  3. ?>

ale wyłapuje mi wszystko, czyli "abc def" "ghi jkl", a ja chcę aby wyłapało "abc def" i nic więcej.

Dziękuję z góry za pomoc.
kossa
A nie prościej usunąć wszystkie znaki cudzysłowie z tekstu, np. str_replace" title="Zobacz w manualu PHP" target="_manual to tak na szybko bez wytężania umysły na wyrażenia regularne a zostanie Tobie tekst który oczekujesz smile.gif

Łukasz
wojckr
Może niedobrze wytłumaczyłem, nie chodzi mi o to, aby usunąć ", tylko żeby wyłapać wszystko co się znajduje pomiędzy pierwszym a drugim ", a owe wszystko to: dowolny znak za wyjątkiem "
isso
Z tego co mi się wydaje to nie da rady tego zrobić funkcjami regularnymi...

Jeżeli jestes pewien, że ciag bedzie zawsze w postaci: " cos cos " " kkk sss " to zrób expolde()" title="Zobacz w manualu PHP" target="_manual ciagu wzgledem znaku " i przeczytaj z tablicy o indeksie 1 smile.gif i sprawa załatwiona smile.gif
marcio
Albo trim() na "
isso
trim()" title="Zobacz w manualu PHP" target="_manual jest chyba nieodpowiedni... bo on chce tylko tekst z pierwszego apostrofu
Crozin
  1. <?php
  2. $str = 'to "jest tekst" a "ala ma kota" i sa happy...';
  3.  
  4. preg_match_all('#"(.*?)"#Usi', $str, $results);
  5.  
  6. echo '<pre>' . print_r($results, true) . '</pre>';
  7. ?>
Potem ewentualnie dla każdej konkretnej zmiennej możesz dać:
  1. <?php
  2. $zmienna = trim($zmienna, '"');
  3. ?>
aby się pozyć cudzysłowi z końca/początku
wojckr
Niestety, wyławia:
abc abc" "abc abc

A więc jeszcze raz: Jakie wyrażenie regularne dopasuje każdy znak za wyjątkiem jakiegoś?

Tzn np. wszystkie znaki za wyjątkiem "a"
albo wszystkie znaki za wyjątkiem "b"?
Crozin
  1. <?php
  2. preg_match('#[^a]+#', $zmienna); //wszystko z wyjatkiem "a"
  3. preg_match('#[^d]+#', $zmienna); //wszystko z wyjatkiem "d"
  4. ?>
nevt
Proszę poprawić temat na zgodny z zasadami publikowania na forum Przedszkole!

Brakuje tagu.
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.