Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Wyrazenia regularne
Marr
post 29.09.2009, 09:12:41
Post #1





Grupa: Zarejestrowani
Postów: 103
Pomógł: 1
Dołączył: 19.08.2008
Skąd: Warszawa

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


Witam, mam pytanie:
jak sprytnie zamienic w danej zmiennej ciag typu [cos,cos,cos] na takie cos: http://jakisprefix/cos/cos/cos.html ? probowalem z preg_replace z tym ze nie wiem ile bedzie tych cosow w nawiasach kwadratowych:

  1. $output = preg_replace('/\[([^,]+)(,([^,]+))*\]/', 'http://costam/${1}/${2}/${3}.html', $output);


mozna jakos to fajnie rozwiazac? bede wdzieczny za pomoc.
Go to the top of the page
+Quote Post
zegarek84
post 29.09.2009, 09:17:32
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


można - ale daj co najmniej 2 przykłady i ich wynik - po tym co opisałeś zrozumiałem tylko 80% - jak na początku dokładnie link wygląda?? - i zapewne rozumiem, że jest cos1,coś2 itd....


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
Marr
post 29.09.2009, 09:23:45
Post #3





Grupa: Zarejestrowani
Postów: 103
Pomógł: 1
Dołączył: 19.08.2008
Skąd: Warszawa

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


mam sobie powiedzmy zmienna ktora zawiera kod html'a. w nim mamy fragment typu
  1. <a href="[cos,cos,cos]">nazwalinku</a>
i chcialbym otrzymac w tej zmiennej
  1. <a href="http://tamojastala/cos/cos/cos.html">nazwalinku</a>
Tak jak mowilem, nie wiem ile bedzie elementow linku.
Go to the top of the page
+Quote Post
zegarek84
post 29.09.2009, 09:49:12
Post #4





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


przerób sobie jak to tylko chcesz -możesz wyciągnąć tak samo preg_match w nawiasie kwadratowym a potem użyć str_replace

tutaj gotowiec inaczej ;p:
  1. class parsuj{
  2. private $reg='/\[([^\]]*)\]/u';
  3. public function fixURL($input){
  4. return preg_replace_callback($this->reg, array($this,'getVariables'), $input);}
  5.  
  6. private function getVariables($input){
  7. return 'http://tamojastala/'.str_replace(',', '/', $input[1]).'.html';}
  8. }
  9.  
  10. $fix=new parsuj();
  11.  
  12. $link='<a href="[cos,cos,cos]">nazwalinku</a>';
  13. $link2='<a href="[jakies_to_jest,mrawe,nie,ruszawe,i_wogole]">nazwalinku</a>';
  14. $link=$fix->fixURL($link);
  15. $link2=$fix->fixURL($link2);
  16. echo $link.'<br />'.$link2;


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
Marr
post 30.09.2009, 08:53:43
Post #5





Grupa: Zarejestrowani
Postów: 103
Pomógł: 1
Dołączył: 19.08.2008
Skąd: Warszawa

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


super, dzieki wielkie.
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 14:25