(gelöst) Text andersfarbig darstellen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
roemi
Mitglied
Beiträge: 114
Registriert: 01.12.2004 09:26

(gelöst) Text andersfarbig darstellen

Beitrag 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.
Zuletzt geändert von roemi am 30.11.2006 22:27, insgesamt 1-mal geändert.
roemi
Meine Homepage und Werbung in eigener Sache: Das deutsche Gambas-Forum
Benutzeravatar
MagMo
Ehemaliges Teammitglied
Beiträge: 584
Registriert: 30.10.2005 16:06
Wohnort: Köln
Kontaktdaten:

Beitrag 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
Meine MODs
Kein Support via PN!
Benutzeravatar
roemi
Mitglied
Beiträge: 114
Registriert: 01.12.2004 09:26

Beitrag 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 :-?
roemi
Meine Homepage und Werbung in eigener Sache: Das deutsche Gambas-Forum
Benutzeravatar
roemi
Mitglied
Beiträge: 114
Registriert: 01.12.2004 09:26

Beitrag 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?
roemi
Meine Homepage und Werbung in eigener Sache: Das deutsche Gambas-Forum
Benutzeravatar
roemi
Mitglied
Beiträge: 114
Registriert: 01.12.2004 09:26

Beitrag von roemi »

Ahhh, einmal schreibt er " in die DB und dann wieder "
roemi
Meine Homepage und Werbung in eigener Sache: Das deutsche Gambas-Forum
Benutzeravatar
roemi
Mitglied
Beiträge: 114
Registriert: 01.12.2004 09:26

Beitrag 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:
roemi
Meine Homepage und Werbung in eigener Sache: Das deutsche Gambas-Forum
Benutzeravatar
MagMo
Ehemaliges Teammitglied
Beiträge: 584
Registriert: 30.10.2005 16:06
Wohnort: Köln
Kontaktdaten:

Beitrag 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
Meine MODs
Kein Support via PN!
Benutzeravatar
roemi
Mitglied
Beiträge: 114
Registriert: 01.12.2004 09:26

Beitrag 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:
roemi
Meine Homepage und Werbung in eigener Sache: Das deutsche Gambas-Forum
Antworten

Zurück zu „Coding & Technik“