Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrazenia regularne i podmiana na wynik fukcji
Forum PHP.pl > Forum > PHP
Kamil_Matysik
Witam...

Mam taki probelem. Mam sobie takie cos w zmiennej $tekst

  1. <?php
  2. $tresc=&#092;"
  3. [-panel:menu-]
  4. [-panel:panel_klienta-]
  5. [-panel:pp-]
  6. [-pic:pic_couple.jpg/243/144-]&#092;";
  7. ?>


i teraz za pomoca wyrazenia chcialbym zemienic takie cos [...] na wynik dzialania fukcji. No np [-panel:menu-] mialo by zamienic na wynik fukcji panel("menu");

Probowalem tak:

  1. <?php
  2. $text = preg_replace('/[-(.*):(.*)-]/', eval('echo '.$1.'(\"$2\");'), $tresc);
  3. ?>


Ale nie dziala to... ma ktos pomysl jak to zrobic?

Bylbym bardzo wdzieczny za pomoc... sadsmiley02.gif
Paul
  1. <?php
  2. $tresc = '
  3. [-panel:menu-]
  4. [-panel:panel_klienta-]
  5. [-panel:pp-]
  6. [-pic:pic_couple.jpg/243/144-]';
  7.  
  8. function panel($str) {
  9. return '<b>'. $str .'</b>';
  10. }
  11. function pic($str) {
  12. return '<i>'. $str .'</i>';
  13. }
  14.  
  15. function zamien($args) {
  16. eval('$tmp = '. $args[1] .'('. $args[2] .');');
  17. return $tmp;
  18. }
  19.  
  20. var_dump(preg_replace_callback(&#092;"/[-(.*):(.*)-]/\", \"zamien\", $tresc));
  21. ?>
Kamil_Matysik
dzieki wielkie.... dziala super biggrin.gif
bendi
A po co wogole do tego funkcji jakiejs uzywac questionmark.gif
  1. <?php
  2.  
  3. $tresc = '
  4. [-panel:menu-]
  5. [-panel:panel_klienta-]
  6. [-panel:pp-]
  7. [-pic:pic_couple.jpg/243/144-]';
  8.  
  9. echo preg_replace(&#092;"/[-(.*?):(.*?)-]/\", '$1($2)', $tresc));
  10.  
  11. ?>

No chyba ze ktos naprawde potrzebuje to lepiej jest skorzystac z modyfikatora e w wyrazeniach czyli:
  1. <?php
  2.  
  3. $tresc = '
  4. [-panel:menu-]
  5. [-panel:panel_klienta-]
  6. [-panel:pp-]
  7. [-pic:pic_couple.jpg/243/144-]';
  8.  
  9. function zamien($args) {
  10.  return $args[0] .'('. $args[1] .')';
  11. }
  12.  
  13. echo preg_replace(&#092;"%[-(.*?):(.*?)-]%e\", 'zamien(array( \"$1\", \"$2\" ) );', $tresc);
  14.  
  15. ?>
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.