Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: regexp
Forum PHP.pl > Forum > Przedszkole
M4chu
Standardowe pytanie: jak z tego zrobic to smile.gif
  1. <?php
  2.  
  3. // z tego
  4. $params = array( 'p1' => 1, 'p2' => 2 );
  5. // to
  6. $pattern = 'pierwszy={p1} i drugi={p2}'; // pierwszy=1 i drugi=2
  7.  
  8. ?>

i odwrotnie
  1. <?php
  2.  
  3. $pattern = 'pierwszy=3 i drugi=4';
  4. $params = array( 'p1' => 3, 'p2' => 4 );
  5.  
  6. ?>
dexter_m
Napisz to trochę jaśniej, to napewno na miarę swoich możliwości Ci pomogę.
Pozdrawiam, dexter.
M4chu
Myslalem, ze w miare jasnie to napisalem no ale trudno smile.gif
Mam tablice parametrow ( p1 => 1, p2 => 2 ) i schemat "pierwszy={p1}/drugi={p2} ktory po przeparsowanie stworzy tekst "pierwszy=1/drugi=2". Chodzi mi tez o "dekodowanie", czyli majac zakodowany tekst "pierwszy=1/drugi=2" dzieki schematowi "pierwszy={p1}/drugi={p2}" powstaje mi tablica parametrow ( 'p1' => 1, 'p2' => 2 ).
Lepiej? smile.gif
FiDO
  1. <?php
  2.  
  3. $params = array( 'p1' => 1, 'p2' => 2 );
  4. $pattern = 'pierwszy={p1} i drugi={p2}'; // pierwszy=1 i drugi=2
  5.  
  6. $wynik1 = preg_replace('#{(.*?)}#e', '$params[\"1\"]', $pattern);
  7.  
  8.  
  9. // i z powrotem
  10. preg_match_all('#{(.*?)}#', $pattern, $m);
  11. $pattern2 = '#'. preg_replace('#{.*?}#', '(.*?)', $pattern, count($m[1]) - 1) .'#';
  12. $pattern2 = preg_replace('#{.*?}#', '(.*)', $pattern2);
  13. preg_match($pattern2, $wynik1, $m2);
  14.  
  15. $wynik2 = array();
  16. for ($i = 0; $i < count($m[1]); $i++) {
  17.     $wynik2[$m[1][$i]] = $m2[$i + 1];
  18. }
  19.  
  20. print_r($wynik, $wynik2);
  21.  
  22. ?>

Druga czesc jest troche bardziej skomplikowana, ale jesli nie znasz ilosci parametrow to jakos nie widze innego rozwiazania.
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.