Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przetwarzanie adresu wg schematu
radziel
post
Post #1





Grupa: Zarejestrowani
Postów: 103
Pomógł: 0
Dołączył: 25.04.2003
Skąd: Olsztyn

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


Od paru godzin męczę się z tym wyrażeniem. Chcę jak najkrócej (i w miarę wydajnie (IMG:http://forum.php.pl/style_emoticons/default/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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
kszychu
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


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. ?>
Go to the top of the page
+Quote Post
radziel
post
Post #3





Grupa: Zarejestrowani
Postów: 103
Pomógł: 0
Dołączył: 25.04.2003
Skąd: Olsztyn

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


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ć? (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif)
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 - 22:30