Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrażenie regularne - "odwrócenie" wzorca i tekstu
phpion
post
Post #1





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Witam,
czy jest jakiś w miarę prosty sposób aby mając tablicę z elementami:
  1. $routes = array(
  2. 'page/([A-z]+)' => 'page/display?slug=$1'
  3. );

dokonać "odwrócenia" wzorca i tekstu tj. zrobić z powyższego:
  1. $routes = array(
  2. 'page/$1' => 'page/display?slug=([A-z]+)'
  3. );

Może powiem do czego jest mi to potrzebne (może jest na to lepsza metoda). Otóż chciałbym generować linki na podstawie tablicy $routes czyli podaję np. page/display?slug=podstrona, w wyniku czego otrzymuję page/podstrona. Dokonując taką podmianę mógłbym sprawdzić czy adres pasuje do nowego (odwróconego) wzorca.

Coś takiego jest w Symfony, ale przeglądanie źródeł jak na razie niewiele mi pomogło (w sumie to nic konkretnego nie znalazłem).

Proszę o jakieś wskazówki jak to najlepiej ugryźć.

Pozdrawiam,
pion
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


To proste haha.gif

  1. <?php
  2.  
  3. $routes = array(
  4. 'page/([A-z]+)' => 'page/display?slug=$1'
  5. );
  6.  
  7. function change($array) {
  8. $arr = array();
  9. foreach ($array as $key => $value) {
  10. $x = substr($value, strpos($value, '/'));
  11. $y = substr($key, strpos($key, '/'));
  12. $arr['page'.$x] = 'page'.$y;
  13. }
  14. return $arr;
  15. }
  16.  
  17. echo '<pre>';
  18. print_r($routes);
  19. echo '</pre>';
  20.  
  21. echo '<pre>';
  22. print_r(change($routes));
  23.  
  24. ?>


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
destroyerr
post
Post #3





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


symfony samo buduje wyrażenie regularne, więc możesz rozważyć użycie całego routingu z symfony. Jeśli jednak koniecznie nie chcesz takiego rozwiązania, to zajrzyj do agavi, tam na podstawie zdefiniowanego wyrażenia regularnego sam wyciąga zmienne i tworzy odpowiedni format do łatwej podmiany parametrów.
AgaviRouting::parseRouteString
Go to the top of the page
+Quote Post
seth-kk
post
Post #4





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


mozesz tez uzyc preg_match_all do wyciagniecia wartosci (3ci parametr) w nawiasach i dolarow oraz w petli preg_replace() z limitem (4ty parametr) do zamiany ich miejscami


--------------------
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 - 15:57