ďťż
Podstrony
|
telcocafeWitam.To jest kod mojej funkcji bbcode function bbcode($str){ // tutaj jest jeszcze inny kod - nie istotny;-) $str = nl2br($str); $str = preg_replace_callback("#\[code\](.*?)\[/code\]#si" , "bbcode_code", $str); } function bbcode_code($str) { $stri = preg_replace('#\[code\](.*?)\[\/code\]#se' , "'<div style=\"background-color: #E5E5E5;\">KOD</div><div style=\"background-color: #EEEEEE;\">'.highlight_string(stripslashes('$1'), true).'</div>'", $str); return $stri[0]; } echo bbcode(' [ code ]<?php include (\'lol.php\'); echo $kod; //end of script ?>[ /code ] '); efektem działania skryptu jest KOD <?php <br /> include ('lol.php');<br /> echo $kod; <br /> //end of script <br&nbs p;/> ?> i tu moje pytanie - co zrobić aby [ code ] nie bylo filtrowane przez nl2br ?? ( bez tego wszystko jest ok ) Użytkownik fenekpl edytował ten post 01 kwiecień 2007, 10:53 Nie wiem, czy dobrze zrozumiałem ;) Jeśli tak, to można najprościej przerzucić wykonywanie nl2br() :) function bbcode_code($str) { $stri = preg_replace('#\[code\](.*?)\[\/code\]#se' , "'<div style=\"background-color: #E5E5E5;\">KOD</div><div style=\"background-color: #EEEEEE;\">'.nl2br(highlight_string(stripslashes('$1'), true)).'</div>'", $str); return $stri[0]; } function bbcode($str) { $str = preg_replace_callback("#\[code\](.*?)\[/code\]#si" , "bbcode_code", $str); } Tak w ogóle, to bym dał taką funkcję (nie wiem czy chodzi, acz powinna ;)): function bbcode_code($str) { return '<div style="background-color: #E5E5E5;">KOD</div><div style="background-color: #EEEEEE;">'.nl2br(highlight_string(stripslashes($str[1]), true)).'</div>'; } //a wywołanie bbcode() tak jak wyżej Użytkownik DJ_ProG edytował ten post 01 kwiecień 2007, 12:05 Własnie nie o to chodzi... chce żeby [ code ] NIE BYŁO filtrowane przez nl2br... A kod function bbcode($str){ // tutaj jest jeszcze inny kod - nie istotny;-) $str = nl2br($str); $str = preg_replace_callback("#\[code\](.*?)\[/code\]#si", "bbcode_code", $str); } musi taki pozostać - poza [ code ] znajdują sie także inne znaczniki bb ( [ b ], [ i ], itd ). jedynie ze znacznikiem code jest problem. Oczywiście, mógłbym [ code ] zmienić na html już przed zapisem do bazy, ale wtedy baza będzie bardziej "zasmiecona" function bbcode($str){ // tutaj jest jeszcze inny kod - nie istotny;-) $str = preg_replace_callback("#\[code\](.*?)\[/code\]#si" , "bbcode_code", $str); $str = nl2br($str); } bikstopa: i to chyba nie to :P fenekpl: słuchaj, nl2br zamienia brackety na afair <br />... Więc wystarczy, że użyjesz str_replace :P To chyba jedyna metoda ;) ok, tak jest ok :> testowalem: <?php function bbcode($str){ // tutaj jest jeszcze inny kod - nie istotny;-) $str = preg_replace_callback("#\[code\](.*?)\[/code\]#si", "bbcode_code", $str); $str = nl2br($str); return $str; } function bbcode_code($str) { $stri = preg_replace('#\[code\](.*?)\[\/code\]#se', "'<div style=\"background-color: #E5E5E5;\">KOD</div><div style=\"background-color: #EEEEEE;\">'.highlight_string(stripslashes('$1'), true).'</div>'", $str); $x = str_replace('<br />', '', $stri[0]); return $x; } echo bbcode('[code]<?php include (\'lol.php\'); echo $kod; //end of script ?>[/code]'); ?> Użytkownik bikstopa edytował ten post 02 kwiecień 2007, 07:05 A co, jeśli chce, by znak nowej linii nadal "był" ? :P Ja w bbcode() dałbym nl2br() przed wywołaniem bbcode_code() - bo w niej umieściłbymreturn str_replace('<br />', "\r\n", $stri[0]);;) ok, dzięki wam, teraz wszystko działa poprawnie ;] --- TEMAT DO ZAMKNIĘCIA --- |
|||
Sitedesign by AltusUmbrae. |