Irtam egy modult amely a GESHI csomagot hasznalja kod szinezesre.
A Geshi mukodese pofon egyszeru, meg kell hivni egy parameterel es mar szinezi a kodot.
A kod szinezo modulom:
- Amikor eszleli a kovetkezo tag-ot: [geshifilter-code type="php"]<?php print 'ok' ?>
[/geshifilter-code] szinezi a kodot.
A regex amely elenorzi a tag-ot:
if (preg_match_all('/\[(code)\stype="([^"]+)"\](.*?)\[\/\1\]/si', $text, $match)) { }
A modulom egyut mukodik a BBCODE modulal. Itt azt szeretnem megjegyezi, hogy a BBCODE is [] zarojeleket hasznal, es valami belekever a szinezo modulomba, az egesz kodom igy nez ki a kimenetnel:
<br /> <?php<br /> $text = 'abc';<br /> if ($text) {<br /> print 'ok';<br /> }<br /> ?><br />
Nem szeretnem a < br / > tagokat latni. Megprobaltam oket leszurni de nem egy megoldas, mert peldaul HTML hasznalja oket es amikor a felhasznalo szinezi a HTML kodjat nem jelenek meg ezek a tagok.
Azt eszleltem, hogy a hiba akkor kovetkezik ha a szinezo modulom a [] zarojelek hasznlaja. Ha atmodositom a regexet <> zarojelekre minden mukodik. En igazan [] zarojelek szeretnek hasznalni.
Meg lehet valahogy oldani, hogy BBCODE ne kuldjon at furcsa dolgokat a modulomba?
Koszonom!
Sikerult
Sikerult megoldani a problemat ugy, hogy a modulomnak kisebb sulyt adtam. Eloszor o fut le aztan pedig a BBCODE igy a ketto nem utkozik. Admin-> Input Locales -> Rearrange
Most csak az a kerdes menyire biztos megoldas. Nem akarnam a hajamat tepni a jovoben, ha peldaul eltunik a "suly" opcio en meg beviszek egy csomo