Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] - Regularne + warunek
pieto
post
Post #1





Grupa: Zarejestrowani
Postów: 227
Pomógł: 1
Dołączył: 12.05.2002
Skąd: gdańsk

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


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


--------------------
Materiały i Wypracowania znajdziesz na zgapa.pl i
Encyklopedii Zgapedia
Jedyny przedawkowany portal motoryzacyjny to autoholik.pl
Go to the top of the page
+Quote Post
Kicok
post
Post #2





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

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


  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.


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





Grupa: Zarejestrowani
Postów: 227
Pomógł: 1
Dołączył: 12.05.2002
Skąd: gdańsk

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


hehe
  1. <?php
  2. $content_oryginal = preg_replace( '/[[Grafika:S*((?:[[.*?]]|.)*?)]]/si', '"getimage(1)"', $content_oryginal );
  3. ?>


Wywala mi w kosmos apacha biggrin.gif


--------------------
Materiały i Wypracowania znajdziesz na zgapa.pl i
Encyklopedii Zgapedia
Jedyny przedawkowany portal motoryzacyjny to autoholik.pl
Go to the top of the page
+Quote Post
Kicok
post
Post #4





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

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


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).

Ten post edytował Kicok 10.07.2007, 12:13:02


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





Grupa: Zarejestrowani
Postów: 227
Pomógł: 1
Dołączył: 12.05.2002
Skąd: gdańsk

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


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. ?>


--------------------
Materiały i Wypracowania znajdziesz na zgapa.pl i
Encyklopedii Zgapedia
Jedyny przedawkowany portal motoryzacyjny to autoholik.pl
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 - 18:46