Seite 1 von 1

(gelöst) Text andersfarbig darstellen

Verfasst: 30.11.2006 13:58
von roemi
Ich habe ein VB ähnliche Highligh'ter gebastelt (basierend auf VBMOD)

Nun möchte ich das das was in "Gänsefüsschen" steht farblich anderst darstellen

in $str steht z.B. IF Key.Code = Key.Return THEN PRINT "Return"

$str = preg_replace ("/".chr(13)."/", "", $str);
$str = preg_replace ("/".chr(34)."/", chr(199), $str);
preg_match_all ("|".chr(199)."(.*?)".chr(199)."|",$str,$save_vb_matchf);

for ($save_vb_i=0; $save_vb_i < count($save_vb_matchf[0]); $save_vb_i++)
{
$save_vb_match_w_f = preg_replace("/".chr(32)."/i",chr(198),$save_vb_matchf[0][$save_vb_i]);
$str = eregi_replace(quotemeta($save_vb_matchf[0][$save_vb_i]),"<span style=color:".$gaensefuesschen.">".$save_vb_match_w_f."</span>", $str);
}

Irgendwas funzt aber nicht. Es wird nichts farblich angepasst

:-?

Mit Kommentar ' oder Rem und diesem hier

preg_match_all ("/('|rem|REM|Rem)(.*)".chr(10)."/",$str,$save_vb_match);
for ($save_vb_i=0; $save_vb_i < count($save_vb_match[0]); $save_vb_i++)
{
$save_vb_match_w_z = preg_replace("/".chr(32)."/i",chr(198),$save_vb_match[0][$save_vb_i]);
$str = eregi_replace(quotemeta($save_vb_match[0][$save_vb_i]),"<span style=color:".$kommentar.">".$save_vb_match_w_z."</span>",$str);
}

klappt es wie es soll.

Verfasst: 30.11.2006 19:55
von MagMo
Hi,

hast du schon einmal etwas in dieser Art probiert?

Code: Alles auswählen

preg_replace('#"([^"]+)"#is', '"<span style=color:'.$gaensefuesschen.'>\\1</span>"', $str);
Habe aber nicht getest, ob es wirklich funktioniert. Bin mir nicht sicher, ob die Umwandlung von " in " von preg_replace bei den einzelnen Durchläufen berücksichtigt wird. Wenn ja sollte es klappen, wenn nicht Pech gehabt.

Grüße
MagMo

Verfasst: 30.11.2006 21:52
von roemi
Nee, so richtig wills nicht.
Vielleicht muss ich den Fehler auch an anderer Stelle suchen.

Z.B. wie kommen die Zeichen eigentlich an :-?

Verfasst: 30.11.2006 22:02
von roemi

Code: Alles auswählen

echo $str."<br>";
   $save_vb_match_w_f = preg_replace("/".chr(32)."/i",chr(198),$save_vb_matchf[0][$save_vb_i]);
   $str = eregi_replace(quotemeta($save_vb_matchf[0][$save_vb_i]),"<span style=color:".$gaensefuesschen.">".$save_vb_match_w_f."</span>", $str);
das echo von $str bringt: PRINT j & Ç nach mySubÇ

Der text lautet: PRINT j & " nach mySub"

Das heißt das er die " als Ç interpretiert!?

Das stimmt doch irgendwo nicht?

Verfasst: 30.11.2006 22:07
von roemi
Ahhh, einmal schreibt er " in die DB und dann wieder "

Verfasst: 30.11.2006 22:27
von roemi
Noch mal ich ... aber das letzte mal in dieser Sache

$str = preg_replace ("/"/", chr(199), $str);
$str = preg_replace ("/".chr(34)."/", chr(199), $str);

ist die Lösung :grin:

Verfasst: 30.11.2006 22:48
von MagMo
Hi,

habe das gerade einmal getest, mit folgendem Code kannst du deine 8 Zeilen Code auf eine Zeile reduzieren:

Code: Alles auswählen

$str = preg_replace('#("|")(.+?)("|")#is', chr(34).'<span style=color:'.$gaensefuesschen.'>\\2</span>'.chr(34), $str);
Eventuell kannst du chr(34).' auch durch '" und '.chr(34) durch "' ersetzen um den Code weiter zu verkürzen. Das habe ich aber jetzt nicht getestet.

Grüße
MagMo

Verfasst: 01.12.2006 10:51
von roemi
Hallo!

Ich bin gerade dabei das Ganze über eine DB abzuhandeln.
Dadurch wird es hoffentlich für mehr als nur eine Sprache verwendbar.

Danke aber für Deine Mühe
:grin: