Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] BBcode - listowanie kodu
Forum PHP.pl > Forum > PHP
Hubson
Opracowuję sobie BBcode na stronę. Wszystko robię przy pomocy funkcji preg_replace() i tak doszedłem do znacznika [ code ][/ code ]. Postanowiłem, że kod będę wyświetlał przy pomocy listy numerowanej <ol></ol>, każdą linijkę oddzielnie pomiędzy <li><code>, a </code></li>. Przy tym ostatnim pojawił się problem, gdyż nijak nie mogę zastosować na atomie (zwracanym wewnątrz funkcji preg_replace()) instrukcji listowania, która zamienia każdy wiersz na <li><code>{zawartość}</code></li>.

  1. <?php
  2. function wylistuj( $char, $string, $open, $close ) {
  3. $explode = explode( $char, stripslashes($string) );
  4. $count = count($explode);
  5. $list='';
  6. for( $x=0;$x<$count;$x++ ) {
  7. $list .= $open.$explode[$x].$close.'
  8. ';
  9. }
  10. return $list;
  11. }
  12.  
  13. function bbcode($string) {
  14. $tekst = htmlspecialchars(stripslashes( $string ));
  15. $tekst = preg_replace("#[ code ](.*?)[/ code ]#", '<ol>'.wylistuj("\n", nl2br('1'), '<li><code>', '</code</li>').'</ol>', $tekst);
  16. return $tekst;
  17. }
  18. ?>
SHiP
Tak się nie wywołuje funkcji ;]

preg_replace_callback" title="Zobacz w manualu PHP" target="_manual
Hubson
Wiem. Prezentuję jedynie fragment kodu.

Odnośnie podanej przez Ciebie funkcji - słyszałem o niej, ale nie umiem z niej skorzystać, jeżeli mógłbyś mnie poinstruować byłbym niemal dozgonnie wdzięczny smile.gif.
SHiP
Preg_replace_callback nie podmienia sam paramerow a zwraca wyszukane rzeczy do innej funkcji, Ta juz dezyduje co ze znalezionymi rzeczami robić winksmiley.jpg.
Przyklad(pisany z glowy), moga byc jakies literowki
  1. <?php
  2.  
  3. function moja($matches)
  4. {
  5. echo 'znalezione rzeczy:';
  6. print_r($matches)
  7. return 'ten kod zostanie wstawiony do zmiennej $tekst';
  8. }
  9.  
  10.  
  11. function bbcode($string) {
  12. $tekst = htmlspecialchars(stripslashes( $string ));
  13. "#[ code ](.*?)[/ code ]#",
  14. "moja",
  15. $tekst);
  16.  
  17. return $tekst;
  18. }
  19. ?>
Hubson
OK, ale jak teraz skorzystać z wyników, które są print_r'owane przez funkcję moja()?
SHiP
Zwracasz co Ci trzeba po przez return i dziala winksmiley.jpg
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.