Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][REGEXP] Tekst pomiędzy cudzysłowami wyłączając \"
wookieb
post 5.02.2009, 10:15:14
Post #1





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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"

Ten post edytował wookieb 5.02.2009, 10:56:27


--------------------
Go to the top of the page
+Quote Post
blooregard
post 5.02.2009, 10:45:34
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Może tak: \\\" ?


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
wookieb
post 5.02.2009, 12:57:01
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Próbowałem.
Ale jak to ująć w wyrażenie regularne, żeby nie brało tego pod uwagę?

Ten post edytował wookieb 5.02.2009, 12:59:38


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post 5.02.2009, 14:13:05
Post #4





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Moze dwustopniowo.

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


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
wookieb
post 5.02.2009, 15:17:59
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




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.


--------------------
Go to the top of the page
+Quote Post
blooregard
post 5.02.2009, 15:20:57
Post #6


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




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.


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
nospor
post 5.02.2009, 15:29:36
Post #7





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




  1. <?php
  2. $zm = 'bla bla "test \" test2" "test3 \" test4" bla bla ';
  3. preg_match_all('/".*?[^]"/', $zm, $matches);
  4. print_r($matches);
  5. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
wookieb
post 5.02.2009, 15:31:19
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




No i o to chodziło smile.gif Wielkie dzieki smile.gif


--------------------
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 Wersja Lo-Fi Aktualny czas: 15.06.2025 - 18:06