Já bych řekl, že tady sebešílenější regulár nemá šanci bezchybně
uspět, a single-line už vůbec. Když si vezmete, že "?>" se v PHP může
vyskytovat ve stringu a to včetně (tušímže PSPadem už tak
nepodporovaného) heredocu / newdocu), řádkovém či blokovém komentáři a
mixu toho všeho, tak i kdyby se mělo jednat o povedený multi-line regulár s
lookbehindem hlídající balance a já nevím co všechno, bylo by jeho
přeaplikovávání pro obarvení kódu dost vražedné.

Vezměte v potaz, že webserver NEdělá to, co známe třeba z browseru a
SCRIPTu vloženého do HTML: totiž že HTML parser vezme obsah párového tagu
script (pokud nemá atribut SRC) a to předá JS enginu. Proto se v HTML
vloženém SCRIPTu nesmí </script> vyskytovat ani v commentu, ani
ve stringu. Webserver s PHP dělá něco podstatně jiného (tedy pokud se
šeredně nemýlím, neověřoval jsem si to jinak než experimentálně): vezme
CELÝ soubor asociovaný pro PHP a předhodí jej PHP enginu a ten pak už
poctivě parsuje 'znak po znaku': dokud nenarazí na <? či <?php (podle
konfigurace) strká všechno do OB, a až v momentě, kdy na <?php narazí, tak
vesele tokenizuje -- tzn dobře ví, zda se ?> vyskytlo někde hluboko ve
stringovém literálu, komentáři, heredocu, nebo zda ukončuje PHP blok.

Řešení problému chybně zvýrazněné syntaxe se nabízejí v podstatě
dvě
- schůdné: přizpůsobíme se my a začneme konkatenovat '?>' na '?'.'>'
kdykoli budeme chtít mít takový konstrukt uvnitř PHP.
- neschůdné: změní se highlighter tak, že se PSPad v podstatě změní na
kód parsující IDE.

-- 
<http://forum.pspad.com/read.php?1,57479,57519>
PSPad freeware editor http://www.pspad.com

Odpovedet emailem