Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [skrypt] funkcja pokazywania zrdola
Forum PHP.pl > Inne > Oceny
Bastion
Ciekaw jestem , co powiedzą spece smile.gif

  1. <?
  2.  
  3. function exp_part($part)
  4. {
  5. if ($part) { return False; } else { return True; }
  6. }
  7.  
  8. function exp_php_source($sourcefile)
  9. {
  10.  show_source($sourcefile) or die(&#092;"To nie jest zrodlo\");
  11.  $source = ob_get_contents();
  12.  
  13.  // Rozbicie na tablice
  14.  $source = explode('<br />',$source);
  15.  
  16.  for ($i = 0; $i < count($source); $i++)
  17.  {
  18. // parzystosc komorki TD do zmiany koloru
  19. $part = exp_part($part);
  20. if ($part) { $bg = &#092;"#F8F8F8\"; } else { $bg = \"#E8E8E8\"; }
  21.  
  22. // poniewaz zalezy mi aby kazda linia byla jednym wierszem tabeli
  23. // a kolorowanie przesz show_source() przebiega w specyficzny sposob
  24. // zainstniala koniecznosc zapamietywania koloru w wierszu powyzej
  25. $fooA = strrpos($source[$i],'<span style=\"color: ');
  26. $fooB = strrpos($source[$i],'</span>');
  27.  
  28. // jesli kolor nie jest zamkniety to znaczy ze bedzie uzyty w komorce nizej
  29. if ($fooA>$fooB) { $fooC = SubStr($source[$i],$fooA+19,8); } else { $fooC = &#092;"#000000\"; }
  30.  
  31. // generowanie linii do bufora
  32. $view.= &#092;"<tr>n\";
  33. $view.= &#092;"<td valign=top align=center bgcolor=black><font color=white><code><strong>\".($i+1).\"</strong></code></font></td>n\";
  34. $view.= &#092;"<td bgcolor=\"$bg\"><code><nobr>&nbsp;$fooD$source[$i]<span></nobr></code></td>n\";
  35. $view.= &#092;"</tr>n\";
  36.  
  37. // jesli ustawiony jest fooC to znaczy ze w nastepnym przebiegu petli bedzie ustaw
  38. ony
  39. // przymusowy kolor
  40. if (isset($fooC)) { $fooD = '<span style=\"color: '.$fooC.'\">'; }
  41.  }
  42.  
  43.  echo &#092;"<table border=0 cellpadding=1 cellspacing=1>$view</table>\";
  44.  
  45. }
  46.  
  47. ?>
hwao
  1. <?php
  2. function exp_part($part)
  3. {
  4. if ($part) { return False; } else { return True; }
  5. }
  6. ?>

Co to wogule ma robic?
  1. <?php
  2. function exp_part($part)
  3. {
  4. // Moze tak
  5. return ( isSet( $part ) ? TRUE : FALSE );
  6. }
  7. ?>


Szczerze to cały kod jest troche 'nie optymalnie' napisany (wydajnosc niska).
Dalo by sie to napisac poprostu prosciej i lepiej.

Brak kolorowania skladni np.
Bastion
funkcja ktora poprawiles sluzy do zmiany parzystosci wybranego koloru wiersza, parzyste sa ciemniejsze , nieparzyste jasniejsze. po zamianie na twoja propozycje kolorowanie przestaje dzialac.

hmmm... przeciez skrypt kolorouje skladnie :

hwao
Rzuc linkiem jak to dziala w pratyce (z kolorowanie mi chodzilo ze js php html :-) )
Ogolnie mogles ten kod sporo zoptymalizowac
Bastion
skrypt pokazuje sam siebie

http://dna.ltd.pl/poligon/source.php

smile.gif optymalizacje napewno beda, juz po umieszczeniu widze pare niepotrzebnych "krzaczkow"
hwao
  1. <?php
  2. show_source($sourcefile) or die(&#092;"To nie jest zrodlo\");
  3. $source = ob_get_contents();
  4. ?>

==
  1. <?php
  2. $source = highlight_file( $sourcefile, TRUE );
  3. ?>


Pozatym podczas zaznaczania kodu zaznacza sie te Literki 1 2 3 itd co jest strasznie nie poreczne
Bastion
poprawka do exp_part jaka podales niestety nie dziala, hum faktycznie kopiowanie z liniami jest nieporeczne , zaraz to poprawie
hwao
  1. <?php
  2. function exp_part($part)
  3. {
  4. return ( ( $part ) ? FALSE : TRUE );
  5. }
  6. ?>

To działa (Nie przygladalem sie w kod dlatego nie wiedzilame coto wogule robi :-)
Bastion
Wiec po szlifach wyglada tak :

  1. <?
  2.  
  3. function exp_part($part)
  4. {
  5.  return ( ( $part ) ? FALSE : TRUE );
  6. }
  7.  
  8. function exp_php_source($sourcefile)
  9. {
  10.  $source = highlight_file( $sourcefile, TRUE );
  11.  $source = explode('<br />',$source);
  12.  
  13.  for ($i = 0; $i < count($source); $i++)
  14.  {
  15. $part = exp_part($part);
  16. if ($part) { $bg = &#092;"#F8F8F8\"; } else { $bg = \"#E8E8E8\"; }
  17.  
  18. $fooA = strrpos($source[$i],'<span style=\"color: ');
  19. $fooB = strrpos($source[$i],'</span>');
  20. if ($fooA>$fooB) { $fooC = SubStr($source[$i],$fooA+19,8); } else { $fooC = &#092;"\"; }
  21.  
  22. $line.= &#092;"<tr><td valign=top align=center bgcolor=black><font color=white><code>\".($i+1).\"</code></font></td></tr>n\";
  23. $view.= &#092;"<tr><td bgcolor=\"$bg\"><code><nobr>&nbsp;$fooD$source[$i]<span></nobr></code></td></tr>n\";
  24.  
  25. if ($fooC<>&#092;"\") { $fooD = '<span style=\"color: '.$fooC.'\">'; }
  26.  }
  27.  
  28.  echo &#092;"<table border=0 cellpadding=0 cellspacing=0>\";
  29.  echo &#092;"<tr><td><table border=0 cellspacing=1 cellpadding=2>$line</table></td>\";
  30.  echo &#092;" <td><table border=0 cellspacing=1 cellpadding=2>$view</table></td>\";
  31.  echo &#092;"</tr></table>\";
  32. }
  33.  
  34. ?>


A dziala tak : http://dna.ltd.pl/poligon/source.php

Kopiowanie juz dziala bez zaznaczania linii
dr_bonzo
Cytat
  1. <?php
  2. for ($i = 0; $i < count($source); $i++)
  3. {
  4.   // parzystosc komorki TD do zmiany koloru
  5.   $part = exp_part($part);
  6.   if ($part) { $bg = &#092;"#F8F8F8\"; } else { $bg = \"#E8E8E8\"; }
  7.  
  8. ?>


a nie prosciej tak:

  1. <?php
  2. $bg = ( ( $i % 2 ) === 1 ) ? '#F8F8F8' : '#E8E8E8';
  3. // ewentualnie zmien kolejnosc kolorow
  4. ?>


--------------
EDIT:
kod dla wiekszej ilosci kolorow:
  1. <?php
  2.  
  3. $kolory[0] = '#aaaaaa';
  4. $kolory[1] = '#bbbbbb';
  5. $kolory[2] = '#cccccc';
  6. $kolory[3] = '#dddddd';
  7. $kolory[4] = '#eeeeee';
  8. $kolory[5] = '#ffffff';
  9.  
  10. $number_of_colors = count( $kolory );
  11.  
  12. for ( $i = 0; $i < $jakas_liczba; $i++ )
  13. {
  14. $KOLOR = $kolory[ $i % $number_of_colors ];
  15. // (...reszta kodu wykorzystujaca te kolory)
  16. }
  17.  
  18. ?>
Bastion
faktycznie smile.gif dzieki .... poprawione , wrzucone pod poprzedni adres

a czy ktos moze mi powiedziec dlaczego na php 5.0.3 podswietlanie dziala OK, a na 4.3.10 nie ?



chyba ze php 4.x koloruje inaczej
hwao
W php.ini pewnie masz ustawione ze ten skalnik jezyka ma kolorowac na ciemno (czarny)
Bastion
smile.gif racjones ... Dziekuje wszystkim za ocene i dobre rady
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.