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


--------------------
pretty as a shit.
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.


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
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.


--------------------
Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
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ą)? wink.gif a podwójnych znaków ucieczki nie wstawia się jak używasz cudzysłowów zamiast apostrofów?


--------------------
pretty as a shit.
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 smile.gif

Powodzenia !


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
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 smile.gif wielkie dzięki za pomoc.


--------------------
pretty as a shit.
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 Aktualny czas: 21.08.2025 - 09:17