Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> GeSHi - prawdopodobnie bug
Walian
post 8.03.2010, 13:31:46
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 1
Dołączył: 13.07.2009

Ostrzeżenie: (0%)
-----


  1. <?php
  2. require_once('geshi/geshi.php');
  3. $source = '<?php
  4. echo \'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  6. <head>
  7. <title>Tytuł</title>
  8. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  9. </head>
  10. <body>
  11. <div style="margin: 0 auto; width: 300px; overflow: auto; border: 1px solid #065fa1; background-color: #ffffff; padding: 10px; font-family: Verdana, Tahoma; font-size: 11px; color: #000">
  12. Przykładowy tekst.
  13. Przykładowy tekst w drugiej linii.
  14. Poniżej długi ciąg znaków:
  15. abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcab
    cabcabcabcabcabcabcabc
  16. </div>
  17. </body>
  18. </html>\';
  19. ?>';
  20. $geshi = new GeSHi('', '');
  21. $geshi->set_encoding('UTF-8');
  22. $geshi->set_source($source);
  23. $geshi->set_language('php'); # Jeśli zmienię na html4strict to jest OK!
  24. $parsed_code = $geshi->parse_code();
  25. echo $parsed_code;
  26. echo "<br>\n Length: ".mb_strlen($parsed_code);
  27. ?>

Po odpaleniu powyższego kodu nie otrzymuję żadnego wyniku ani błędu w przeglądarce - jedynie chwilę trzeba czekać aż przeglądarka (testowałem w Operze) otrzyma odpowiedź czyli pokaże, że załadowano stronę.
Plik jest oczywiście zapisany w UTF-8.
Co do tego:
  1. $geshi = new GeSHi('', '');
  2. $geshi->set_source($source);
  3. $geshi->set_language('php');

Zastosowałem taką konstrukcję, bo parsowanie kodu wywołuję w pętli - wyodrębniam wszystko pomiędzy tagami bbcode i odpowiednio parsuję za pomocą GeSHi, a bez sensu byłoby wykonywać:
  1. $geshi = new GeSHi($source, 'php');

w każdym przebiegu pętli.
Tutaj jedynie przedstawiłem uproszczony kod, który wciąż powoduje problem.
Widzicie jakiś błąd w powyższym kodzie? Bo ja nie...

Jeśli usunę:
  1. </body>
  2. </html>

To GeSHi poprawnie pokoloruje składnię i nie będzie żadnych błędów.
Również zamiana na html4strict nie powoduje problemów. Tylko coś z tym kolorowaniem składni PHP...
Na początku myślałem, że może tu chodzi o zamykające tagi body i html, ale wystarczy wstawić jeszcze jeden </div> i też będzie problem.

Wersja GeSHi: 1.0.8.6.
Jeśli nie znacie sposobu rozwiązania błędu to może polecicie inny skrypt, z którym nie będzie takowych problemów?

Na zdalnym serwerze nie ma tego problemu.
Natomiast nie wspomniałem, że na localhost występował błąd serwera - Opera wyświetlała, że połączenie zostało zresetowane. Natomiast w logach Apache nie znalazłem nic, co mogłoby mieć związek z tym błędem.

Ten post edytował Walian 8.03.2010, 21:38:18
Go to the top of the page
+Quote Post

Posty w temacie
- Walian   GeSHi - prawdopodobnie bug   8.03.2010, 13:31:46


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 10:13