Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]highlight_string()
Forum PHP.pl > Forum > Przedszkole
marcio
Witam mam maly problem mam taka funkcje
  1. function phpcode($arr) {
  2.  
  3. $str = $arr[1];
  4.  
  5. if(substr($str[1], 0, 2) != '<?' ) {
  6. $str[1] = '<?php '.$str.'';
  7. }
  8. else if(substr($str[1], 0, 5) != '<?php') {
  9. $str[1] = '<?php '.$str.'';
  10. }
  11. if(substr($str[1], -2) != '?>') {
  12. $str[1] .= '?>';
  13. }
  14. return $str;
  15. }

I taki bbcode
  1. <?php
  2. function bbcode($zmien) {
  3. $zmien = htmlspecialchars(trim($zmien));
  4. $zmien = preg_replace_callback("#[php](.*?)[/php]#si", "phpcode", $zmien);
  5. return $zmien;
  6. }
  7. ?>

i mam taki blad:
Cytat
Fatal error: Cannot use assign-op operators with overloaded objects nor string offsets

Nietesty nie wiem co oznacza blad i jak go poprawic chodzi o to zeby kolorwac skladnie php smile.gif
Gladiatus
Czemu chcesz to zrobić w BBCode? Polecam skorzystać z Geshi.

http://webpassion.pl/tut_2.html

Koloruje nie tylko składnie PHP ale także całej masy języków czarodziej.gif
marcio
Wiem ze mozna ale po co kombinowac??To jak wie ktos dlaczego nie dziala?
Gladiatus
Wejdź sobie tu:
http://www.bbcode.strefaphp.net/bbcode.php
Zaznacz KOD- kolorowanie składni na kolor PHP czy jakoś tak wstydnis.gif

Kliknij mu WYGENERUJ KOD

i użyj tego co ci wygeneruje. Mnie to w miarę działa. I też mam za pomocą BBCODE party.gif
marcio
Nom w sumie tez tak myslalem ale pokombinuje jeszcze dzis tongue.gif

No ok cos tam pokombinowalem
  1. function phpcode($code){
  2.  
  3. if(!$code) return;
  4.  
  5. $code[1]=trim($code[1]);
  6. $code[1]=html_entity_decode($code[1]);
  7. $code[1]=str_replace('<Br>','',$code[1]);
  8.  
  9. if(substr($code[1], 0,5) !== '<?php') $code[1] = '<?php '.$code.'';
  10. if(substr($code[1], -2) != '?'.'>') $code[1] .= '?'.'>';
  11.  
  12.  
  13. $kod=highlight_string($code[1], TRUE);
  14. if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'){
  15. $sys[0]='<code><span style="color: #000000">'."\n";
  16. $sys[1]=chr(10).'</code>';
  17. }
  18. else{
  19. $sys[0]="<font color=\"#000000\">\n";
  20. $sys[1]="\n</code>";
  21. }
  22. $kod=str_replace(array($sys[0],$sys[1]),array('<code><font color="#000000">','</code>'),$kod);
  23. $ret='<pre style="background-color:#D7D7D7; border: 1px solid black;">'.$kod.'</pre>;
  24. print_r($code);
  25. return $ret;
  26. }
  27. ?>

Bbcode tak jak wyzej jednak za 3 problemy:
*usuwa ' i "
*dodaje nowe dodatkowe linie czyli np mam takie cos
  1. <?php
  2. echo('costam');
  3. ?>

To po pierwsze w echo nie ma ' ani " ogolnie usuwa je a kod wyglada tak
  1. <?php
  2.  
  3.  echo(costam);
  4.  
  5. ?>

Dodaje nowe linie nie wiem czemu

POtem gdy miedzy znacznikami php dam znaczniki <?php i ?> to mam taki wynik za pomoca print_r()
<!--quoteo--><div class='quotetop'>Cytat</div><div class='quotemain'><!--quotec-->Array ( [0] =>
  1. <?php if(substr($str, -2) != &#092;'?'.'>') { $str .= '?'.'>'; } ?>
[1] => \') { $str .= \'?\'.\'>\'; } ?> )[/quote]
jesli nie dam znacznokow to one sie dodaja jednak nie ma juz kodu a jest tylko takie cos: <?php Array?> oto wynik print_r()
Cytat
Array ( [0] =>
  1. <?php
  2. if(substr($str, -2) != &#092;'?'.'>') { $str .= '?'.'>'; }
  3. ?>
[1] => )

Jak widac 2 elemt tablicy jest pusty dlaczego co zle robie z dodawanie tych znacznikow?

Ogolnie przy dodawaniu ?> lacze ciag kropka bo czytalem na jakims forum ze moze kod sie posypac i cos juz dziala ale to nie to smile.gif

P.S czy jest jakas funckja podobna do html_entity_decode ktora nie bedzie usuwac ' i " htmlspecialchars nie dziala bo zamienia <>

Ogolnie juz znaczniki mi dodaje " nie usuwa ale ' wciaz usuwa i nie wiem co zrobic macie jakies pomysly?

Jedyne co mi przychodzi do glowy to zamienic te znaczniki za pomoca str_replace na ich odpowiedniki
Cytat
The translations performed are:
  • '&' (ampersand) becomes '&amp;'
  • '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set.
  • ''' (single quote) becomes ''' only when ENT_QUOTES is set.
  • '<' (less than) becomes '&lt;'
  • '>' (greater than) becomes '&gt;'

Jednak nie bedzie to zbyt optymalne

To jak wie ktos jak pomoc?

questionmark.gifquestionmark.gif
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.