Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> regexp
M4chu
post
Post #1





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 28.09.2003
Skąd: Rzeszów

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


Standardowe pytanie: jak z tego zrobic to (IMG:http://forum.php.pl/style_emoticons/default/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. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
dexter_m
post
Post #2





Grupa: Zarejestrowani
Postów: 139
Pomógł: 0
Dołączył: 16.07.2005

Ostrzeżenie: (10%)
X----


Napisz to trochę jaśniej, to napewno na miarę swoich możliwości Ci pomogę.
Pozdrawiam, dexter.
Go to the top of the page
+Quote Post
M4chu
post
Post #3





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 28.09.2003
Skąd: Rzeszów

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


Myslalem, ze w miare jasnie to napisalem no ale trudno (IMG:http://forum.php.pl/style_emoticons/default/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? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
FiDO
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


  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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 19:02