Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][wyrazenia] usunąć wszytko poza { }
Forum PHP.pl > Forum > PHP
b_chmura
Witam
Panie i Panowie jak z tekstu usunąć wszystko oprócz tego co znajduje sie między np. klamerkami ({ })?
GrayHat
http://php.net/preg_replace
b_chmura
jak odwrócić działanie tego wyrażenia?

  1. <?php
  2. $temp = preg_replace('#{[0-9]+}#si', '', $temp);
  3. ?>
Blodo
  1. <?php
  2. $temp = preg_replace('#}(.+){#si', '', $temp);
  3. ?>
franki01
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. ?>
.radex
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...
Kicok
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 ;]
.radex
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"
franki01
Juz naprawde masz tyle do wyboru ze nie wiem co chcesz wiecej... Jak cos innego to dobrze wytlumacz...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.