Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][wyrazenia] usunąć wszytko poza { }
b_chmura
post
Post #1





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

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


Witam
Panie i Panowie jak z tekstu usunąć wszystko oprócz tego co znajduje sie między np. klamerkami ({ })?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
GrayHat
post
Post #2





Grupa: Zarejestrowani
Postów: 566
Pomógł: 18
Dołączył: 23.08.2003
Skąd: Łomża

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


http://php.net/preg_replace


--------------------
*Note: No animals were killed durning the construction of this post.
Go to the top of the page
+Quote Post
b_chmura
post
Post #3





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

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


jak odwrócić działanie tego wyrażenia?

  1. <?php
  2. $temp = preg_replace('#{[0-9]+}#si', '', $temp);
  3. ?>
Go to the top of the page
+Quote Post
Blodo
post
Post #4





Grupa: Zarejestrowani
Postów: 51
Pomógł: 1
Dołączył: 1.02.2005

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


  1. <?php
  2. $temp = preg_replace('#}(.+){#si', '', $temp);
  3. ?>


Ten post edytował Blodo 8.09.2007, 22:53:29
Go to the top of the page
+Quote Post
franki01
post
Post #5





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


Cytat(Blodo @ 8.09.2007, 23:52:54 ) *
  1. <?php
  2. $temp = preg_replace('#}(.+){#si', '', $temp);
  3. ?>


A jak bedzie {text} ? Ten sposob dla mnie odpada tongue.gif

  1. <?php
  2. $text = "nie{tak}moze ale nie {owszem}";
  3.  
  4. preg_match_all("({(.*?)})", $text, $tmp);
  5.  
  6. $return = "";
  7.  
  8. foreach($tmp[1] as $one) {
  9. $return .= "{".$one."}";
  10. }
  11. ?>


Ten post edytował franki01 9.09.2007, 20:15:24
Go to the top of the page
+Quote Post
.radex
post
Post #6





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

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


można także napisać prosty parser (pisane z palca):

  1. <?php
  2. $pisz = TRUE;
  3.  
  4. $tekst = 'abcdefgh{dandas}dmkj83m9cas}d{adnkasdnk';
  5.  
  6. for($i=0;$i<strlen($tekst);$i++){
  7.  
  8. $t2 = $tekst{$i};
  9.  
  10. if($t2 == '{'){
  11. $pisz = FALSE;
  12. }
  13. if($pisz == TRUE){
  14. $tekst2 .= $t2;
  15. }
  16. if($t2 == '}' && $pisz == FALSE){
  17. $pisz = TRUE;
  18. }
  19.  
  20. }
  21.  
  22. echo $tekst.'<Br>'.$tekst2;
  23. ?>


EDIT: Działa...

Ten post edytował radex_p 10.09.2007, 06:27:48


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
Kicok
post
Post #7





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Najprościej to wywalić wyrażeniem regularnym wszystko co znajduje się:
- między początkiem tekstu a pierwszym wystąpieniem "{"
- między "}" a "{"
- między ostatnim wystąpieniem "}" a końcem tekstu:

  1. <?php
  2.  
  3. $tekst = 'aaa {bbbb} aaa {bbbb}{bbbb} aaaa';
  4.  
  5. $tekst = preg_replace( '/^[^{]+|(})[^{]+({)|[^}]+$/', '$1$2', $tekst );
  6. echo $tekst;
  7.  
  8. ?>




@DOWN
Zwróć uwagę na nawiasy okrągłe w wyrażeniu i na $1$2. Ewentualnie skopiuj sobie ten kod i przetestuj ;]

Ten post edytował Kicok 10.09.2007, 14:43:12


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
.radex
post
Post #8





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

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


Może najprościej, ale chodzi o to, żeby wywalić wszystko pomiędzi "}", a "{". Z tego co rozumiem napisałeś inaczej niż chodziło. tj. Wyświetliło by się "bbbbbbbbbbbb"


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
franki01
post
Post #9





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


Juz naprawde masz tyle do wyboru ze nie wiem co chcesz wiecej... Jak cos innego to dobrze wytlumacz...
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: 19.08.2025 - 07:21