Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] - Regularne + warunek
Forum PHP.pl > Forum > PHP
pieto
Witam,

NIezabardzo sobie radze z regularnymi.
mam taki kod

$content_oryginal = preg_replace( '%\[\[Grafika:(.*?)\]\]%e', 'getimage("$1")',$content_oryginal);

dziala prawidlowo, jednak czasami w obrebie [[Grafika: terefere ]] trafia sie drugi nawias kwadratowy np [[Grafika: [[terefere]] i terefere ]] i w tym przypadku sie kopie,
poratuje ktos pomocą..

z góry dzieki
Kicok
  1. <?php
  2.  
  3. $str = 'asd asd asd [[Grafika: boo]] sad awd dwqa [[Grafika: boo [[foo]] boooo]] sda sa asd';
  4. echo $str . '<br />';
  5.  
  6. $str = preg_replace( '/[[Grafika:S*((?:[[.*?]]|.)*?)]]/si', '"Znalezione: <b>1</b>"', $str );
  7. echo $str;
  8.  
  9. ?>


Przeanalizuj sobie to wyrażenie i dostosuj do własnych potrzeb.
pieto
hehe
  1. <?php
  2. $content_oryginal = preg_replace( '/[[Grafika:S*((?:[[.*?]]|.)*?)]]/si', '"getimage(1)"', $content_oryginal );
  3. ?>


Wywala mi w kosmos apacha biggrin.gif
Kicok
1. Zamień \\S* na \\s* - podczas pisania włączył mi się Caps i zapomniałem to poprawić.

2. Sprawdź, czy taki kod, jaki podałem w poście wyżej zadziała. Jeśli też wywali apache'a, to podaj wersję serwera www i interpretera PHP.

3. Żeby preg_replace wywołało jakąś funkcję musisz dodać "e" do modyfikatorów wyrażenia (czyli powinno być: sie).
pieto
eh dalej to samo,
PHP 4.4.4
mysql 4.0.26
apache 2.2.23

Testuje lokalnie na Viscie.

Mozna tez pozbyc [[ ]] wewnatrz [[ ]] mysle ze to latwiejszy sposob ale nie udaje mi sie wymyslic kodu mimo to sad.gif

a będę pisał monologi, co mi tam,

rozwiązałem sobie tak
  1. <?php
  2. $content_oryginal = preg_replace( '%[[(.*?)]](.*?)]]%e', '"$1.$2"', $content_oryginal ) ;
  3.  
  4.  
  5.  
  6.  $content_oryginal = preg_replace( '%[[Grafika:(.*?)(?:(.*?)]])?]]%e', 'getimage("$1")', $content_oryginal ) ;
  7. ?>
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.