Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][REGEXP] Tekst pomiędzy cudzysłowami wyłączając \"
Forum PHP.pl > Forum > PHP
wookieb
Szukałem informacji na ten temat lecz nie mogłem znaleźć albo tez nie umiem szukać.
Interesuje mnie jak złożyć wyrażenie regularne tak aby wybrał treść pomiędzy cudzysłowami ale tak, żeby nie uwzględniało \"
Przykład
test "to jest ciąg \" testowy".
i chciałbym wyciągnąć z tego "to jest ciąg \" testowy".
Niestety nie znalazłem info jak tego dokonać.

//EDIT
Oczywiście chodzi o wyciąganie leniwe (*?) ponieważ nie chce przy tekście
"test \" test2" "test3 \" test4"
wyciągnąć "test \" test2" "test3 \" test4"
tylko 2 fragmenty
"test \" test2" i "test3 \" test4"
blooregard
Może tak: \\\" ?
wookieb
Próbowałem.
Ale jak to ująć w wyrażenie regularne, żeby nie brało tego pod uwagę?
dr_bonzo
Moze dwustopniowo.

1. zamien [^\]" na jakies "WAZNECOSTAM"
2. szukaj tekstu miedzy dwoma "WAZNECOSTAM"
wookieb
Cytat(dr_bonzo @ 5.02.2009, 14:13:05 ) *
Moze dwustopniowo.

1. zamien [^\]" na jakies "WAZNECOSTAM"
2. szukaj tekstu miedzy dwoma "WAZNECOSTAM"


To rozwiązanie jest nawet dobre, jednakże to ma być edytor tekstu więc nie mogę brać WAZNECOSTAM ponieważ istnieje ryzyko ze WAZNECOSTAM moze wpisac wczesniej uzytkownik.
blooregard
No to idąc tym tropem zamień \" na np. 40-znakowy hash SHA1.
Tu już jest mniejsze prawdopodobieństwo, że user wpisze coś takiego świadomie.
nospor
  1. <?php
  2. $zm = 'bla bla "test \" test2" "test3 \" test4" bla bla ';
  3. preg_match_all('/".*?[^]"/', $zm, $matches);
  4. print_r($matches);
  5. ?>
wookieb
No i o to chodziło smile.gif Wielkie dzieki smile.gif
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.