Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zmiana znaków z [] na <>
Forum PHP.pl > Forum > Przedszkole
ZeTu
Witam
Chciałbym, aby kod php zamieniał linki, pogrubienie i zdjęcia w taki sposób:

Z
  1. [link]adres[/link]
na
  1. <a href="adres" target="_blank">adres</a>

Z
  1. [img]zdjecie[img]
na
  1. <img src="zdjecie">

Z
  1. [b]Test bogrubiony[/b]
na
  1. <b>Test bogrubiony</b>


Próbowałem preg_replace, ereg_replace, ereg_replace_all i nie udaje się, bo wyświetla w taki sposób np.
Zmieniam z
  1. [b]Test bogrubiony[/b]
i daje mi
  1. [<b>]Test bogrubiony[</b>]

Nie wiem czemu. Prosiłbym o pomoc
untorched
Podaj kod, poprawimy smile.gif
Lolek13
  1. $aaa = array("[", "]");
  2. $bbb = array("<", ">");
  3. $zmienna = '[ b]Test bogrubiony[ /b]';
  4.  
  5. str_replace($aaa , $bbb, $zmienna);
untorched
Cytat(Lolek13 @ 30.08.2012, 02:24:19 ) *
  1. $aaa = array("[", "]");
  2. $bbb = array("<", ">");
  3. $zmienna = '[ b]Test bogrubiony[ /b]';
  4.  
  5. str_replace($aaa , $bbb, $zmienna);


Tu potrzeba preg_replace...

// Edit:
Stwierdziłem, że proszę sciana.gif :
  1. class BBCode {
  2.  
  3. private $_patterns = array();
  4.  
  5. public function __construct()
  6. {
  7. $this->addPattern('/\[b\](.*?)\[\/b\]/', '<b>$1</b>'); // bold
  8. $this->addPattern('/\[img\](.*?)\[\/img\]/', '<img src="$1">'); // img
  9. $this->addPattern('/\[link\](.*?)\[\/link\]/', '<a href="$1" target="_blank">$1</a>');
  10. }
  11.  
  12. public function addPattern($pattern, $replace)
  13. {
  14. $this->_patterns[] = array($pattern, $replace);
  15. }
  16.  
  17. public function parse($source)
  18. {
  19. foreach($this->_patterns as $pattern)
  20. {
  21. $source = preg_replace($pattern[0], $pattern[1], $source);
  22. }
  23.  
  24. return $source;
  25. }
  26.  
  27. };
  28.  
  29. $bbcode = new BBCode();
  30. echo $bbcode->parse('Pogrubienie!<br><br>[link]http://google.pl[/link]');
Taka O! klasa, łatwa w dopisywaniu nowych "kodów" etc.
ZeTu
Bardzo dziękuję za pomoc, przyda się nie tylko mi, ale i innym też smile.gif
(wiedziałem, że to bbcode, tylko zapomniałem nazwy :/ )
Dodam coś od siebie:
  1. $this->addPattern('/\[kolor="(.*?)"\](.*?)\[\/kolor\]/', '<font color="$1">$2</font>'); // kolor tekstu
  2. $this->addPattern('/\[img="(.*?)"\](.*?)\[\/img\]/', '<a href="$1" target="_blank"><img src="$2" border="0"></a>'); // odnośnik obrazkowy
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.