Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » highlight_string Antworten
highlight_string

webworker
Fachidiot


Beiträge: 115


highlight_string -- Hervorhebung der Syntax eines Strings

Hallo,

ich habe einen Text, in diesem Text steht u.a. zwischen [ php ] und [ / php ] PHP-Code.
Mein Problem: Wie kann ich aus dem Text die Teile zwischen [ php ] und [ / php ] herauffiltern und auf diesen Teil highlight_string anwenden?

Weiß jemand Rat?


  Profil   Editieren   Zitieren

MCM
Quasselstrippe


Beiträge: 425


1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10:
function callback($buffer) {
     return(highlight_string($buffer));
}


ob_start("callback");

blablabla, PHP code
    
ob_end_flush();


So sollte es klappen ;)

---
cya MCM

[my page] [about me]

[Je mehr Bürger mit Zivilcourage ein Land hat, desto weniger Helden wird es einmal brauchen]
[by Franca Magnani]

  Profil   Website   Editieren   Zitieren

webworker
Fachidiot


Beiträge: 115


Was mein Problem ist: Es soll ja nur der Code zwischen [ php ] und [ / php ] mit highlight_string "formatiert" werden...

Klappt auch irgendwie nicht
//Edit: klappt schon, aber Problem ist nicht beseitigt...

Diese Nachricht wurde geändert von: webworker
  Profil   Editieren   Zitieren

Ehemaliges Mitglied (#644)
Forenheld


Beiträge: 835


wieso gibst du uns nicht mal dein script ? ;)

  Profil   Editieren   Zitieren

webworker
Fachidiot


Beiträge: 115


Ich weiß nicht, ob euch 577 Zeilen Code nicht eher verwirren würden

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8:
<?php
$text = "Test Text ... blubb [php]<?php phpinfo(); ?>[/php] ..lalala..";

--highlight_string etc.--

?>


Und jetzt möchte ich nur das, was zwischen [ php] und [/ php] steht mit highlight_string formatieren... *wiederhol*

  Profil   Editieren   Zitieren

MCM
Quasselstrippe


Beiträge: 425


Dann musst du alles zwischen [php] und [/php] per preg_replace rausholen und highlight string machen!

---
cya MCM

[my page] [about me]

[Je mehr Bürger mit Zivilcourage ein Land hat, desto weniger Helden wird es einmal brauchen]
[by Franca Magnani]

  Profil   Website   Editieren   Zitieren

Ehemaliges Mitglied (#644)
Forenheld


Beiträge: 835


wieso wandelst du nicht einfach das <? und ?> um und gibst es per highlight string aus!?

  Profil   Editieren   Zitieren

webworker
Fachidiot


Beiträge: 115


Könnte mir diesem Codeschnipsel bitte jemand posten? Wäre cool...

Leider habe ich zu preg_replace auf PHP.net nur englisches gefunden... Und wenn ich das sehe denke ich, das es auch ziemlich lange dauern würde bis ich das könnte *g*

  Profil   Editieren   Zitieren

Can
Halbgott


Beiträge: 1330


1: 
2: 
3: 
4: 
5: 
6: 
7:
$text="Test Text ... blubb [php]<?php phpinfo(); ?>[/php] ..lalala..";

$start="[php]";
$end="[/php]";

$phpcode=substr($text,strpos($text,$start)+strlen($start));
$phpcode=substr($phpcode,0,strpos($phpcode,$end));


Und $phpcode kannste dann highlighten lassen.

---
"S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox

  Profil   E-Mail   Editieren   Zitieren

webworker
Fachidiot


Beiträge: 115


Danke, das funktioniert

Aber das Problem ist, das es nur beim ersten funzt. Wenn ich mehrere Codes (mehr mals [php] [/php]) wird bloß das erste umgewandelt... (Geht das ohne preg_replace eigentlich mehrmals?)

Und den Text muss ich auch irgendwie ausgeben...


  Profil   Editieren   Zitieren

Can
Halbgott


Beiträge: 1330


Mh...das musst du schon dazu sagen *g*

Dann ist das ohne regexps natürlich etwas schwieriger. Sollen die weiteren Code-Teile dann einfach angehängt werden?

---
"S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox

  Profil   E-Mail   Editieren   Zitieren

webworker
Fachidiot


Beiträge: 115


Ich habe ein eigenes Forum geproggt... In den Posts möchte ich jetzt highlight_string anwenden. Wenn ein User mehrmals Code ausschnitte postet und dazwischen Text stehen hat müssen die Code ausschnitte natürlich auch in der richtigen Reihenfolge stehen

Sorry das ich nicht gleich gesagt habe worums geht

  Profil   Editieren   Zitieren

Philipp Gérard
Foren-Team


Beiträge: 1508


hier meine funktion mit ewas schrott drin, aber php lesen kannste ja, also lösch dir raus, was du nicht brauchst

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
69: 
70: 
71: 
72: 
73: 
74:
/**
* Funktion zum Parsen von PHP-Code
*/
function parsephp($code) {

 $code = str_replace("&gt;", ">", $code);
 $code = str_replace("&lt;", "<", $code);
 $code = str_replace("&amp;", "&", $code);
 $code = str_replace("[URL]", "", $code);
 $code = str_replace("[/URL]", "", $code);
 $code = str_replace("&quot;", "\"", $code);
 $code = str_replace('$', '\$', $code);
 $code = str_replace("<br>", "", $code);
 $code = str_replace("<br />", "", $code);
 
 $code = stripslashes($code);
 
 /*
 * Code parsen:
 */

 ob_start();
 
  $oldlevel = error_reporting(0);
  
  highlight_string($code);
 
  error_reporting($oldlevel);
  
  $buffer = ob_get_contents();
 
 ob_end_clean();
 
 $return    = $buffer;
 
 /*
 * Zeilen berechnen:
 */
 
 $return    = str_replace("<br />", "\n", $return);
 $return    = str_replace("\t", "", $return);
 
 $codeteile = preg_split('#\n#', $return);
 $laenge    = sizeof($codeteile);
 
 for($j=0;$j<sizeof($codeteile);$j++) {  
  $zeile = $j + 1;  
  if($j < ($laenge -1)) {
   $linenumbers .= "$zeile: \n";
  } else {
   $linenumbers .= "$zeile:";
  }
 }
 
 /*
 * Daten ausgeben (TPL-Engine):
 */

 global $template;
 
 $charray = array(
          "{code}"        => $return,
          "{height}"      => $height,
          "{linenumbers}" => $linenumbers
 );

 $outvar = $template->open("php_code", $charray);

 return $outvar;

}
	$phpsearch[] = '/\[php\](.*)\[\/php\]/Uesi';
	$phpreplace[] = 'parsephp(\'\1\')';
	$text = preg_replace($phpsearch, $phpreplace, $text);


---
Arbeit ist das Feuer der Gestaltung. - Marx

  Profil   E-Mail   Website   Editieren   Zitieren

Can
Halbgott


Beiträge: 1330


Wieso baust du Schrott in deine Funktionen ein?

---
"S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox

  Profil   E-Mail   Editieren   Zitieren

Philipp Gérard
Foren-Team


Beiträge: 1508


naja, für ihn ist es schrott, da er keinen zugriff auf die verwendeten funktionen/klassen hat

---
Arbeit ist das Feuer der Gestaltung. - Marx

  Profil   E-Mail   Website   Editieren   Zitieren
Seite 1 | 2  

Antworten
Nach oben