Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Wyrażenia regularne] Wszystkie znaki za wyjątkiem jakiegoś
wojckr
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 4
Dołączył: 6.05.2007
Skąd: Wrocław

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


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.

Ten post edytował wojckr 21.07.2008, 11:20:22
Go to the top of the page
+Quote Post
kossa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

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


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Łukasz
Go to the top of the page
+Quote Post
wojckr
post
Post #3





Grupa: Zarejestrowani
Postów: 50
Pomógł: 4
Dołączył: 6.05.2007
Skąd: Wrocław

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


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 "
Go to the top of the page
+Quote Post
isso
post
Post #4





Grupa: Zarejestrowani
Postów: 296
Pomógł: 32
Dołączył: 3.01.2005

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


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) i sprawa załatwiona (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował isso 6.04.2008, 22:25:30
Go to the top of the page
+Quote Post
marcio
post
Post #5





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Albo trim() na "
Go to the top of the page
+Quote Post
isso
post
Post #6





Grupa: Zarejestrowani
Postów: 296
Pomógł: 32
Dołączył: 3.01.2005

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


trim()" title="Zobacz w manualu PHP" target="_manual jest chyba nieodpowiedni... bo on chce tylko tekst z pierwszego apostrofu
Go to the top of the page
+Quote Post
Crozin
post
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


  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
Go to the top of the page
+Quote Post
wojckr
post
Post #8





Grupa: Zarejestrowani
Postów: 50
Pomógł: 4
Dołączył: 6.05.2007
Skąd: Wrocław

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


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"?
Go to the top of the page
+Quote Post
Crozin
post
Post #9





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


  1. <?php
  2. preg_match('#[^a]+#', $zmienna); //wszystko z wyjatkiem "a"
  3. preg_match('#[^d]+#', $zmienna); //wszystko z wyjatkiem "d"
  4. ?>
Go to the top of the page
+Quote Post
nevt
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


Proszę poprawić temat na zgodny z zasadami publikowania na forum Przedszkole!

Brakuje tagu.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 18:24