Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kolorowanie składni
Forum PHP.pl > Forum > PHP
xblant
Napisalem cos takiego i mi nie koloruje co tu moze byc zle:
  1. <?php
  2. function php($kod)
  3. {
  4. $kod = highlight_string($kod, true);
  5. echo $kod;
  6. }
  7. $php = 'function cos()
  8. {
  9. echo 'witaj';
  10. }';
  11. php($php);
  12. ?>

jak zmienie echo na returnw funkcji php nic nie wyswietla
dugem
Cześć,

Twoja zmienna php powinna zaczynać się od <?php i kończyć ?>. To działa poprawnie:

  1. <?php
  2. function php($kod)
  3. {
  4.  
  5. }
  6. $php = '<?php function cos()
  7. {
  8. echo 'witaj';
  9. }?>';
  10. php($php);
  11. ?>


Pozdrawiam
hwao
jezeli wprowadzasz tak to mozesz tak

  1. <?php
  2. function php( $sCode ) {
  3.  return highlight_string( '<?php '.$sCode.' ?>', true);
  4. }
  5.  
  6. $sPhp = 'function cos()
  7. {
  8. echo 'witaj';
  9. }';
  10.  
  11. echo php( $sPhp );
  12. ?>
E-d
A ja mam inny problem . Jak mam kod:
  1. function ColorCode(&$text){
  2. $code_o = explode("php", $text);
  3. $text = $code_o[0];
  4. for($i=1; $i < count($code_o); $i++){
  5.  $code_c = explode("/php", $code_o[$i]);
  6.  $code_c[0] = stripslashes($code_c[0]);
  7.  
  8.  if(!eregi("<\?", $code_c[0])){
  9. $code_c[0]="<?php&#092;n".$code_c[0];
  10. $del_php=true;
  11.  }
  12.  $code_c[0] = Hl($code_c[0]);
  13.  if($del_php==true) $code_c[0] = str_replace("&lt;?php<br />", "", $code_c[0]);
  14.  
  15.  $text .= '<br /><p style="font-size: 12px; margin: 4px; border: 1px black solid; padding: 5px;">'.$code_c[0]."</P>".$code_c[1];
  16. }
  17.  
  18. return $text;
  19. }
  20.  
  21. function Hl($code){
  22. $code = ob_get_contents();
  23.  
  24. return $code;
  25. }
  26. ?>

koloruje on kod miedzy [ php ] a [ /php]. I gdy robie normalnie w pliku to jest dobrze, ale gdy chce żeby kolorowało zmienną z explode to zamiast nowej lini jest znak n
przyklad:
  1. <?php
  2. $file = file("data/arty.txt");
  3.  
  4. for ( $e = 0 ; $e < count ( $file ) ; $e++ ) {
  5. list( $topic , $text ) = explode("|+|", $file[$e] ) ;
  6. if ( $e == $id ) {
  7.  
  8. ColorCode($text);
  9.  
  10. echo "<table style=\"width: 532px\"><tr><td style=\"background: url(Obrazki/belka_news.gif); height: 20px\">".$topic."</td></tr>
  11. <tr><td>".$text."</td></tr></table>";
  12. }
  13. }
  14. ?>


p.s - Z 1 kodu usunołem [ i ] w otwieraniu i zamykaniu znaczników
hwao
Qrde niezby rozumie smile.gif po 1 podpowiem Ci tyle ile wiem

  1. <?php
  2. function Hl($code){
  3. return highlight_string($code, true);
  4. }
  5. ?>

2 parametr (z tego co pamietam) jest czy ma zwracac czy wyswietlac:)

Pokaz jakie masz wejscie i po przeksztalceniach co sie dzieje, to jakos zaradzimy (bo teraz to nawet nie mam zbytnio przetestowac jak to dziala smile.gif bo nie wiem how:) )
xblant
thx ale jest jeszcze cos jak moge rozpoznac czy ktos wpisal to "<?php" lub "<?" i "?>" questionmark.gif? bo przy wpisywaniu ktos tego nie wpisze i wyjdzie nic a takto samo doda
crash
  1. <?php
  2. if( substr( $string, 0, 2 ) == '<?' )
  3.   // ...
  4. if( substr( $string, -2 ) == '?>' )
  5.   // ...
  6. ?>
xblant
  1. <?php
  2. function phpcode($code)
  3. {
  4. if(substr($code, 0, 2) !== '<?' )
  5. {
  6. $code = '
  7. <?php
  8. '.$code.'';
  9. }
  10. else if(substr($code, 0, 5) !== '<?php')
  11. {
  12. $code = '
  13. <?php
  14. '.$code.'';
  15. }
  16.  
  17. if(substr($code, -2) !== '?>')
  18. {
  19. $code .= '
  20. ?>';
  21. }
  22. $code = highlight_string($code, true);
  23. echo $code;
  24. }
  25.  
  26. function bbc($str)
  27. {
  28. $str = preg_replace("#\[php\](.*?)\[/php\]#si", "phpcode(\\1)", $str);
  29. echo $str;
  30. }
  31. ?>

i jak w 55 linijce "$str = preg_replace("#\[php\](.*?)\[/php\]#si", "phpcode(\\1)", $str);" wywolac funkcje phpcode z parametrem \\1 jak jest tak napisane nie dziala questionmark.gifquestionmark.gif?
crash
  1. <?php
  2. $str = preg_replace("#\[php\](.*?)\[/php\]#si", phpcode("\\1"), $str);
  3. ?>
xblant
dzieki crash,
jednak jest jakis blad, a no taki:
Kod
<?php

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /data/members/free/tripod/uk/x/p/l/xplanet/htdocs/xplanet v.2.0/bbc.php on line 21
1
?>

gdy kod funkcji kolorujacej wyglada tak:
  1. <?php
  2. function phpcode($str)
  3. {
  4. if(substr($str, 0, 2) !== '<?' )
  5. {
  6. $str = '
  7. <?php
  8. '.$str.'';
  9. }
  10. else if(substr($str, 0, 5) != '<?php')
  11. {
  12. $str = '
  13. <?php
  14. '.$str.'';
  15. }
  16. if(substr($str, -2) != '?>')
  17. {
  18. $str .= '
  19. ?>';
  20. }
  21. $str = highlight_string($str, true);
  22. echo $str;
  23. }
  24. ?>

Gdzie tu moze byc blad jeszcze sie niespotkalem z takim blendem questionmark.gifquestionmark.gif
hwao
  1. <?php
  2. if(substr($str, -2) != '?'.'>')
  3. {
  4. $str .= '?'.'>';
  5. }
  6. ?>


sprawdz to, zapewno wysypuje sie na ?> pare razy tak mialem:> (co prawda z komentarzem, ale.. )
xblant
nie w tym problem
  1. <?php
  2. $str = preg_replace("#\[php\](.*?)\[/php\]#si", "phpcode(\\1)", $str);
  3. ?>

on nie rozumie fragmentu z "phpcode" wywolujac to wyswietla mi "phpcode("to co jest mied znacznikami php i ")"
co mozna z tym zrobic
hwao
łatwiej bedzie smile.gif
preg_replace_callback()

  1. <?php
  2. $str = preg_replace_callback("#\[php\](.*?)\[/php\]#si", "phpcode", $str);
  3. ?>


tylko zbadaj sobie jak Ci dane wchodza do tej funkcji (ciut inaczej, tablica, to co zwrocisz w tej funkcji, zastapi stara wartosc).
xblant
dobra mam dosc dalej nie dziala
prosze pomozcie
kod strony bbc.php z linku
  1. <?php
  2.  
  3. function phpcode($str)
  4. {
  5. if(substr($str[1], 0, 2) !== '<?' )
  6. {
  7. $str[1] = '
  8. <?php
  9. '.$str.'';
  10. }
  11. else if(substr($str[1], 0, 5) != '<?php')
  12. {
  13. $str[1] = '
  14. <?php
  15. '.$str.'';
  16. }
  17. if(substr($str[1], -2) != '?>')
  18. {
  19. $str[1] .= '
  20. ?>';
  21. }
  22. echo $str[1];
  23. }
  24.  
  25. function bbc($str)
  26. {
  27. $str = preg_replace("#\[b\](.*?)\[/b\]#si", "<b>\\1</b>", $str);
  28.  
  29. $str = preg_replace("#\[i\](.*?)\[/i\]#si", "<i>\\1</i>", $str);
  30.  
  31. $str = preg_replace("#\[u\](.*?)\[/u\]#si", "<u>\\1</u>", $str);
  32.  
  33. $str = preg_replace("#\[color=(.*?)\](.*?)\[/color\]#si", "<span style=\"color:\\1\">\\2</span>", $str);
  34.  
  35. $str = preg_replace("#\[size=(.*?)\](.*?)\[/size\]#si", "<span style=\"font-size:\\1\">\\2</span>", $str);
  36.  
  37. $str = preg_replace("#\[code\](.*?)\[/code\]#si", "<table><tr><td class=\"codetitle\"><b>Kod:</b></td></tr><tr><td class=\"codetext\">\\1</td></tr></table>", $str);
  38.  
  39. $str = preg_replace("#\[quote\](.*?)\[/quote\]#si", "<table><tr><td class=\"quotetitle\"><b>Cytat:</b></td></tr><tr><td class=\"quotetext\">\\1</td></tr></table>", $str);
  40.  
  41. $str = preg_replace("#\[email=(.*?)@(.*?)\](.*?)\[/email\]#i", "<a href=\"mailto:\\1@\\2\">\\3</a>", $str);
  42.  
  43. $str = preg_replace("#\[url=(.*?)](.*?)\[/url\]#si", "<a href=\"\\1\" target=\"_blank\">\\2</a>", $str);
  44.  
  45. $str = preg_replace_callback("#\[php\](.*?)\[/php\]#si", "phpcode", $str);
  46. echo $str;
  47. }
  48. $text = '[php\]<?php
  49. echo "cos";
  50. ?>[/php\]';
  51. bbc($text);
  52. ?>

co tu moze byc nie tak niemoge tego ugryzc mad.gif
podmienilem znaczniki php na "[php\]" i "[/php\]
hwao
Wrr nic nie sluchasz!:)

  1. function phpcode($arr){ // tak jak mowilem, nie bedziesz mial tu stringu tylko tablice!
  2. $str = $arr[1]; // ni jestem pewien czy ta wiec sprawdz sobie! print_r( $arr );
  3. if(substr($str[1], 0, 2) !== '<?' )
  4. {
  5. $str[1] = '
  6. <?php
  7. '.$str.'';
  8. }
  9. else if(substr($str[1], 0, 5) != '<?php')
  10. {
  11. $str[1] = '
  12. <?php
  13. '.$str.'';
  14. }
  15. if(substr($str[1], -2) != '?>')
  16. {
  17. $str[1] .= '
  18. ?>';
  19. }
  20. echo $str[1];
  21. }



Po 1, ładniej tak
  1. <?php
  2. return $str; // return nie echo!
  3. }
  4. ?>


a uzywa sie tak

Kod
$text = '[php]<?php
echo "cos";
?>[/php]';

echo bbc($text);
xblant
gdy zmienna $text jest taka:
  1. $text = '[php\]<?php echo "cos"; ?>[/php\]';

po wykonanui print_r($arr) wychodzi
  1. <?php
  2.  
  3. Array ( [0] => [php&#092;][/php\] [1] => )
  4.  
  5. ?>

a gdy $text wyglada tak:
  1. <?php
  2.  
  3. $text = '[php\]echo "cos";[/php\]';
  4.  
  5. ?>

po wykonaniu print_r($arr) wychodzi
  1. <?php
  2.  
  3. Array ( [0] => [php&#092;]echo "cos";[/php\] [1] => echo "cos"; )
  4.  
  5. ?>

ten drugi jest dobry ale jak bedzie ze znacznikami "<?php" i "?>" to co nie wyjdzie
znowu pozamienialem znaczniki php
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.