Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: preg_replace i funkcja jako replacement
Forum PHP.pl > Forum > PHP
szymonnn
Witam,
korzystam z biblioteki geshi do podświetlania kodu, która jest napisana w php. Chodzi o to, że w formularzu pisze bbcode typu [kod]plik.cpp[/kod], gdzie plik.cpp jest argumentem dla funkcji WyswietlKod (plik zawiera kod jakiegoś języka programowania), po czym ta funkcja po przeparsowaniu pliku zwraca podświetlony kod html. Jeśli zastosuje poniższy kod, to nie rozpoznane zostaje \\1 w wyrażeniach regularnych i zamiast szukać np. pliku plik.cpp, to funkcja chce otworzyć plik \1. Jak zrobić to, że tekst zawarty między blokami [kod]...[/kod] będzie argumentem dla funkcji WyswietlKod, która zwraca podświetlony kod html?

$tekst = preg_replace("#\[kod\](.*?)\[/kod\]#si", $this->WyswietlKod("\\1"), $_POST['tresc']);

Z góry dziękuję i pozdrawiam~
webdevil
Sprawdź parametr e w wyrażeniu regularnym - szerzej o tym masz w manualu - przykład:
  1. <?php
  2. preg_replace("/(</?)(w+)([^>]*>)/e",
  3.             "'1'.strtoupper('2').'3'",
  4.             $html_body);
  5. ?>
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.