Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Wyrażenia regularne - zaprzeczenie?
krzywy36
post
Post #1





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


Chcę z tekstu wyciągnąć wszystkie wystąpienia "{ ...coś... }" takie, że ...coś... nie zawiera znaku "{".
Próbowałem z czymś takim:
  1. preg_match('/\{[^\{]*}/', $test);

czyli jak ja to rozumiem: "dowolna ilość znaków różnych od "{", pomiędzy nawiasami klamrowymi", ale nie działa ;<

Ten post edytował krzywy36 23.06.2012, 00:14:54
Go to the top of the page
+Quote Post
tolomei
post
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

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


Bardzo ciężka sprawa...
Na stackoverflow nawet mówią, że się nie da.
Inni podają jakieś przykłady, które nie nadają się dla Twojego problemu...

Sam dopracowałem się czegoś takiego(przez ostatnie dwie i pół godziny):
  1. <?php
  2. $str = '{abcd}{ef{gh}{ijkl}{mnop}{rst{u}';
  3.  
  4. preg_match_all('/\\{([^\\{]*?(?!\\{)[^\\{]*?)(?(1)}|\\{[^}]+?})/', $str, $out);
  5.  
  6. echo '<pre>';
  7. print_r($out);
  8. echo '</pre>';


Jeszcze jutro spróbuję.

Może ktoś jeszcze ma jakiś pomysł ?

Pozdro.

PS. Musisz wstawić podwójny znak ucieczki - raz dla PHP, a drugi raz dla PCRE.
Go to the top of the page
+Quote Post
Shido
post
Post #3





Grupa: Zarejestrowani
Postów: 121
Pomógł: 22
Dołączył: 22.06.2012

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


Moze olać w wyrazeniu to { i pobrać wszystko co pasuje niezaleznie czy posiada ten znak czy nie. Potem np. Za pomocom strpos() posprawdzac czy jest { jezeli jest to niech nic nie robi ( lub usunie zmienna ktora zawiera ten tekst ) a jezeli nie ma to niech coś tam robi.
Go to the top of the page
+Quote Post
krzywy36
post
Post #4





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


@tolomei po kilku testach widzę, że Twój sposób działa, więc co z nim nie tak (może poza estetyką)? (IMG:style_emoticons/default/wink.gif) a podwójnych znaków ucieczki nie wstawia się jak używasz cudzysłowów zamiast apostrofów?
Go to the top of the page
+Quote Post
tolomei
post
Post #5





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

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


Witam ponownie.

W tej na wyjściu masz tak:


[0] => {abcd}
[1] => {gh}
[2] => {ijkl}
[3] => {mnop}
[4] => {u}


a myślałem że chcesz taki efekt:


[0] => {abcd}
[1] => {ijkl}
[2] => {mnop}


Z tymi znakami ucieczki oczywiście masz rację... Zbyt późno było chyba dla mnie wczoraj (IMG:style_emoticons/default/smile.gif)

Powodzenia !
Go to the top of the page
+Quote Post
krzywy36
post
Post #6





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


jest dobrze, tak chciałem (IMG:style_emoticons/default/smile.gif) wielkie dzięki za pomoc.
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: 14.09.2025 - 18:00