Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] jak podmienić fragment string'a?
Blackmoore
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 22.08.2009
Skąd: Gdańsk

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


Witam, mam pytanie. W jaki sposób mogę najpierw znaleźć fragmenty string'a znajdujące się pomiędzy "[c++]" i "[/c++] i podmienić je na pokolorowaną składnię? Chcę skorzystać z GeSHi.

Przykład:
$string = "ala ma [c++]cout<<kota;[/c++] i lubi [c#]mleko[/c#]";

wywołanie GeSHI:
$geshi = new GeSHi($source, $language); //koloruje $source
echo $geshi->parse_code();

Ten post edytował Blackmoore 4.10.2010, 22:43:41
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Blackmoore
post
Post #2





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 22.08.2009
Skąd: Gdańsk

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


Wielkie dzięki, przydała się ta funkcja. Napisałem taki skrypt:
  1. include("geshi/geshi.php");
  2. if (isset($_POST['content'])) {
  3. $content = stripslashes($_POST['content']);
  4. $output = parseTagsRecursive($content);
  5.  
  6. echo $output;
  7. }
  8. else {
  9. echo '<b><i style="color: #A0A0A0;">Press the "Preview" button.</i></b>';
  10. }
  11. function parseTagsRecursive($input)
  12. {
  13.  
  14. $regex = '#\[cpp]((?:[^[]|\[(?!/?cpp])|(?R))+)\[/cpp]#';
  15.  
  16. if (is_array($input)) {
  17. $geshi = new GeSHi($input[1], 'cpp');
  18. $input[1] = $geshi->parse_code();
  19. $input = '<div style="margin-left: 10px">'.$input[1].'</div>';
  20. }
  21.  
  22. return preg_replace_callback($regex, 'parseTagsRecursive', $input);
  23. }

Tylko co muszę zrobić, żeby obsługiwało większą liczbę języków, tak jak tutaj na forum (słabo znam się na wyrażeniach regularnych)?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 26.12.2025 - 23:28