Witam

Ktoś kiedyś coś stworzył a mi teraz każą to poprawiać. Niestety w internecie nie znalazłem ładnego rozwiązania mojego problemu, na chwilę obecną jest coś na ten wzór
  1. $array = array(
  2. '/^([a-zA-Z\-]+)$/' => 'foo/bar/$1',
  3. );
  4. $str = 'alamakota';
  5. preg_filter(array_keys($array),array_values($array),$str)
  6.  
  7.  

po preg_filter jest warunek gdzie sprawdźamy czy nasz $str na pewno został zamieniony na to co powinien więc rozbijany jest cały foo/bar/$1 co wydje mi się trochę głupie. Ale z drugiej strony jeśli nie będziemy tego sprawdzać to dajemy zbyt dużą swobodę, więc pomyślałem by zrobić coś takiego:
  1. $array = array(
  2. '/^([a-zA-Z\-]+)$/' => array('foo','baar','$1'),
  3. );

Niestety nie mam bladego pojęcia co dalej zrobić by to lub coś podobnego zadziałało...

jedyne co mi przyszło do głowy
  1. $array = array(
  2. array('/^([a-zA-Z\-]+):([0-9]+):([A-Z]+)$/','foo','bar'),
  3. );
  4. $str = 'alamakota:23:ZZZZZZ';
  5.  
  6. foreach($array as $val) {
  7. if(preg_match($val[0],$str, $matches)) {
  8. $val[0] = $matches;
  9. break;
  10. }
  11. }