Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przetwarzanie adresu wg schematu
Forum PHP.pl > Forum > PHP
radziel
Od paru godzin męczę się z tym wyrażeniem. Chcę jak najkrócej (i w miarę wydajnie winksmiley.jpg )przetworzyć taki o to kod:

Kod
http://www.test.com/?id=2&test=ala&x=23
http://www.wiki.pl/?test=32&ala=mala&a=4


na postać:

Kod
http://www.test.com/id_2/test_ala/x_23/
http://www.wiki.pl/test_32/ala_mala/a_4/


Moj dotychczasowy kod:

  1. <?php
  2. $strCode = 'http://www.test.com?id=2&test=ala&x=23 <br> http://www.wiki.pl?test=32&ala=mala&a=4';
  3. echo preg_replace('/\?([\w_]+)=(\w*)[&]?/', '\\1_\\2/',$strCode);
  4. ?>


Przetwarza pierwszą zmienną z parametrem a resztę pomija. Z kolei kiedy na początku usunę '\?' "w szpony" preg'a dostają się też znaczniki html, ponieważ daję mu do przetworzenia cały kod strony.

Oczywiście mógłbym zrobić to bez problemu przy pomocy explode i implode,ale czuję, że preg'iem jest dużo wydajniej (choć trudniej).

Mogę prosić o jakieś sugestie?
kszychu
Ja to jestem prosty chłopak z podlasia (chociaż mam 10 palców), więc ja bym to zrobił tak:
  1. <?php
  2. $new_url = str_replace(array('?', '=', '&'), array('', '_', '/'), $old_url);
  3. ?>
radziel
Dzięki twojej podpowiedzi doszedłem do czegoś takiego:

  1. <?php
  2. function ChangeChars($str)
  3. {
  4. $str=preg_replace(array('/\?/', '/\=/', '/\&/'), array('', '_', '/'), $str);
  5. return $str[1].'/';
  6. }
  7. echo preg_replace_callback('/(http\:\/\/[\w\.\-\_\&\=\?\/]*)/','ChangeChars',$strCode);
  8.  
  9. ?>


Może to można jeszcze prościej zrobić? rolleyes.gif
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.