Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyrazenia regularne
Forum PHP.pl > Forum > Przedszkole
Marr
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.
zegarek84
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....
Marr
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.
zegarek84
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;
Marr
super, dzieki wielkie.
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.