Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Kolorowanie kodu i wyciąganie danych z treści
redelek
post 14.05.2010, 08:07:54
Post #1





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Witam,

Chcę dodać na swoją stronę moduł GESHI. Działa ładnie. Mam tylko taki mały problem.
Z bazy jest pobierane pole o dużej ilości treści czyli taki opis.
w treści jest wpis
[code=php]
tutaj kod php
[/code]

Jak po pobraniu znaleść w treści te wpisy i wstawić kolorowanie w te miejsca i tak żeby znacznik [code=php] nie był widoczny ?

Będę bardzo zobowiązany za pomoc lub wskazówki

Dzięki


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post
kapuch
post 14.05.2010, 10:19:57
Post #2





Grupa: Zarejestrowani
Postów: 389
Pomógł: 69
Dołączył: 26.04.2010
Skąd: Łódź

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


preg_replace() nadal by sie do tego.
W pierwszym wypadku, szukasz jakiegos ciagu znaku i zastepujesz go tym samym ciagiem ale ze znacznikami <font color>szukany ciag</font>, albo dodajesz jakis inny znacznik np '<spam></spam>' definiowany w css.
A w drugim [code=php][/code] zastepujesz np '<code></code>';
Niestety nie podam ci wzorca, bo nie lubie/nie umiem wyrazen regularnych tongue.gif
Sprobuj samemu cos wyskrobac, a jak nie to zawsze mozna uzyc str_replace(); biggrin.gif
Popraw mnie, jesli nie o to Ci chodzilo.

Ten post edytował kapuch 14.05.2010, 10:22:31


--------------------
Nie chce "Pomógł", aktualna ilość (69) w pełni mnie satysfakcjonuje :)
Go to the top of the page
+Quote Post
wookieb
post 14.05.2010, 10:35:27
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




MOja stopka -> parser bbcode i możesz sobie modyfikować co tam chcesz (dodać języki dostepne w code i podłączyć geshi)


--------------------
Go to the top of the page
+Quote Post
redelek
post 14.05.2010, 10:55:28
Post #4





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Super, ale to dla mnie za bardzo zaawansowane,
Zanim dojdę co i jak to ruski rok minie.

Udało mi się znaleźć coś takiego
  1. class ColorSyntax {
  2.  
  3. public function SearchCode($content) {
  4. $content = preg_replace("#\[code lang=\"(.*?)\"\]\'\(.*?)\[\/code\]#sie", '$this->PreformBlock("\\1","\\2");', $content);
  5.  
  6.  
  7. return $content;
  8. }
  9.  
  10. public function PreformBlock($lang, $source){
  11. $source = stripslashes($source);
  12. $result = $this->HighlightCode($source, $lang);
  13. return $result;
  14. }
  15.  
  16. public function ParseCode($content){
  17. return $this->SearchCode($content);
  18. }
  19.  
  20. public function HighlightCode($source, $lang ){
  21. $geshi = new GeSHi($source, $lang);
  22. $geshi->set_source($source);
  23. $result = $geshi->set_language($lang);
  24. $result = $geshi->parse_code();
  25. return $result;
  26. }
  27. }


Problem jest tylko w tym, że jeśli między znacznikami [code lang="php"] wystąpią pojedyncze cudzysłowy lub podwójne to rozwala się cała strona
przykład
  1. $POST='
  2. [code lang="bash"]
  3. #!/bin/bash
  4. plik="/tmp/dane_db.txt"
  5. if [ 'ddd' -ge "dd" ]; then
  6.  
  7. ';


i niestety staje na linijce if , macie pomysł jak to poprawić ?


--------------------
Pozdrawiam
Piotrek R
Go to the top of the page
+Quote Post
wookieb
post 14.05.2010, 11:09:12
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Nie musisz rozkminiać. Wystarczy przeczytać README


--------------------
Go to the top of the page
+Quote Post

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: 13.06.2025 - 02:41