John Percival
06-01-2001, 10:00 PM
My first hack for vB :D
In functions.php, add this in at line 425, just after several lines of code about $replacearray
// START VISUAL BASIC PARSING HACK
if (!function_exists("visbasparse")) {
global $kw;
if ($incp) {
include("./visbas.php");
} else {
include("./admin/visbas.php");
}
}
$searcharray[] = "/(\[)(vbcode)(])(\r\n)*(.*)(\[\/vbcode\])/esiU";
$replacearray[] = "visbasparse('\\5')";
// END VISUAL BASIC PARSING HACK
And then upload visbas.php to the admin directory:
<?php
error_reporting(7);
$kw=array("#Const","#If","Abs","Add","Alias","And","Any","AppActivate","Array","As","Asc","Atn","Base","Beep",
"Boolean","Byte","ByVal","CBool","CByte","CCur","CDBl","CDate","CDec","CInt","CLng","CSng","CStr","CVErr","CVar",
"Call","Case","ChDir","ChDrive","Chr","Clear","Close","Collection","Command","Compare","Const","Cos","CreateObject",
"CurDir","Currency","DDB","Date","DateAdd","DateDiff","DatePart","DateSerial","DateValue","Day","Debug","Declare",
"DefBool","DefByte","DefCur","DefDate","DefDbl","DefDec","DefInt","DefLng","DefObj","DefSng","DefStr","DefVar",
"DeleteSetting","Dim","Dir","Do","DoEvents","Double","EOF","Each","Else","ElseIf","End","Endif","Environ","Eqv",
"Erase","Err","Error","Exit","Exp","Explicit","FV","FileAttr","FileCopy","FileDateTime","FileLen","Filelen","Fix",
"For","Format","Function","Get","GetAllSettings","GetAttr","GetObject","GetSetting","Global","GoSub","GoTo","Hex",
"Hour","IIR","IPmt","If","Imp","In","InStr","Input #","Int","Integer","Is","IsArray","IsDate","IsEmpty","IsError",
"IsMissing","IsNull","IsNumeric","IsObject","Item","Kill","LBound","LCase","LOF","LSet","LTrim","Left","Len","Let",
"Lib","Like","Line Input #","Loc","Lock","Log","Long","Loop","MIRR","Me","Mid","Minute","MkDir","Mod","Module",
"Month","MsgBox","NPV","NPer","Name","New","Next","Not","Now","Object","Oct","On","Open","Option","Or","PPmt","PV",
"Pmt","Print","Print #","Private","Property","Public","Put","QBColor","RGB","RSet","RTrim","Raise","Randomize",
"Rate","ReDim","Remove","Reset","Resume","Return","Right","RmDir","Rnd","SLN","SYD","SaveSetting","Second","Seek",
"Select","SendKeys","Set","SetAttr","Sgn","Shell","Sin","Single","Space","Spc","Sqr","Static","Step","Stop","Str",
"StrComp","StrConv","String","Sub","Switch","Tab","Tan","Then","Time","TimeSerial","TimeValue","Timer","To","Trim",
"Type","TypeName","UBound","UCase","Unlock","Until","Val","VarType","Variant","Weekday","Wend","While","Width #",
"With","Write #","Xor","Year",
"Optional","InStrRev","Replace","Split","Join");
function visbasparse($text) {
global $kw;
$text=str_replace("\\'", "'", $text);
$lines=explode("\n",$text);
$val="";
while (list($brr,$line)=each($lines)) {
if (substr(trim($line),0,1)=="'" or strtolower(substr(trim($line),0,4))=="rem ") {
$line="<font color=\"#007F00\">$line</font>";
} else {
$quoteplace=strrpos($line,"'");
if ($quoteplace>0) {
$beforequote=substr($line,0,$quoteplace);
if (countchar($beforequote,"\"")%2==0) {
$afterquote="<font color=\"#007F00\">".substr($line,$quoteplace)."</font>";
$codebit=$beforequote;
} else {
$afterquote="";
$codebit=$line;
}
} else {
$afterquote="";
$codebit=$line;
}
reset ($kw);
$codebit=" $codebit";
while (list($key,$keyword)=each($kw)) {
$codebit=ereg_replace("([\r\n\\(\\)>, .])$keyword([\r\n <,.$\\(\\)])","\\1<font color=\"#00007F\">$keyword</font>\\2",$codebit);
}
$codebit=substr($codebit,1);
if ($afterquote!="") {
$line=$codebit.$afterquote;
} else {
$line=$codebit;
}
}
$val.=$line;
}
$val=str_replace("'", "\'", $val);
$val = str_replace("\\\"","\"",$val);
if (substr($val,0,1)=="\n" or substr($val,0,1)=="\r") {
$val=substr($val,1);
}
return "</normalfont><blockquote><pre><smallfont>visual basic code:</smallfont><hr>" . str_replace("<br>", "", $val) . "<hr></pre><normalfont></blockquote>";
}
?>
Users can then use [vbcode] tags to access this.
I know that this is not very useful for many people, but it could be easily modified for other programming languages.
John
[edit - there's something funny going on with the slashes in the PHP code. Quote this message, and use the code straight from the reply window to get it accurately within any escaping problems.]
In functions.php, add this in at line 425, just after several lines of code about $replacearray
// START VISUAL BASIC PARSING HACK
if (!function_exists("visbasparse")) {
global $kw;
if ($incp) {
include("./visbas.php");
} else {
include("./admin/visbas.php");
}
}
$searcharray[] = "/(\[)(vbcode)(])(\r\n)*(.*)(\[\/vbcode\])/esiU";
$replacearray[] = "visbasparse('\\5')";
// END VISUAL BASIC PARSING HACK
And then upload visbas.php to the admin directory:
<?php
error_reporting(7);
$kw=array("#Const","#If","Abs","Add","Alias","And","Any","AppActivate","Array","As","Asc","Atn","Base","Beep",
"Boolean","Byte","ByVal","CBool","CByte","CCur","CDBl","CDate","CDec","CInt","CLng","CSng","CStr","CVErr","CVar",
"Call","Case","ChDir","ChDrive","Chr","Clear","Close","Collection","Command","Compare","Const","Cos","CreateObject",
"CurDir","Currency","DDB","Date","DateAdd","DateDiff","DatePart","DateSerial","DateValue","Day","Debug","Declare",
"DefBool","DefByte","DefCur","DefDate","DefDbl","DefDec","DefInt","DefLng","DefObj","DefSng","DefStr","DefVar",
"DeleteSetting","Dim","Dir","Do","DoEvents","Double","EOF","Each","Else","ElseIf","End","Endif","Environ","Eqv",
"Erase","Err","Error","Exit","Exp","Explicit","FV","FileAttr","FileCopy","FileDateTime","FileLen","Filelen","Fix",
"For","Format","Function","Get","GetAllSettings","GetAttr","GetObject","GetSetting","Global","GoSub","GoTo","Hex",
"Hour","IIR","IPmt","If","Imp","In","InStr","Input #","Int","Integer","Is","IsArray","IsDate","IsEmpty","IsError",
"IsMissing","IsNull","IsNumeric","IsObject","Item","Kill","LBound","LCase","LOF","LSet","LTrim","Left","Len","Let",
"Lib","Like","Line Input #","Loc","Lock","Log","Long","Loop","MIRR","Me","Mid","Minute","MkDir","Mod","Module",
"Month","MsgBox","NPV","NPer","Name","New","Next","Not","Now","Object","Oct","On","Open","Option","Or","PPmt","PV",
"Pmt","Print","Print #","Private","Property","Public","Put","QBColor","RGB","RSet","RTrim","Raise","Randomize",
"Rate","ReDim","Remove","Reset","Resume","Return","Right","RmDir","Rnd","SLN","SYD","SaveSetting","Second","Seek",
"Select","SendKeys","Set","SetAttr","Sgn","Shell","Sin","Single","Space","Spc","Sqr","Static","Step","Stop","Str",
"StrComp","StrConv","String","Sub","Switch","Tab","Tan","Then","Time","TimeSerial","TimeValue","Timer","To","Trim",
"Type","TypeName","UBound","UCase","Unlock","Until","Val","VarType","Variant","Weekday","Wend","While","Width #",
"With","Write #","Xor","Year",
"Optional","InStrRev","Replace","Split","Join");
function visbasparse($text) {
global $kw;
$text=str_replace("\\'", "'", $text);
$lines=explode("\n",$text);
$val="";
while (list($brr,$line)=each($lines)) {
if (substr(trim($line),0,1)=="'" or strtolower(substr(trim($line),0,4))=="rem ") {
$line="<font color=\"#007F00\">$line</font>";
} else {
$quoteplace=strrpos($line,"'");
if ($quoteplace>0) {
$beforequote=substr($line,0,$quoteplace);
if (countchar($beforequote,"\"")%2==0) {
$afterquote="<font color=\"#007F00\">".substr($line,$quoteplace)."</font>";
$codebit=$beforequote;
} else {
$afterquote="";
$codebit=$line;
}
} else {
$afterquote="";
$codebit=$line;
}
reset ($kw);
$codebit=" $codebit";
while (list($key,$keyword)=each($kw)) {
$codebit=ereg_replace("([\r\n\\(\\)>, .])$keyword([\r\n <,.$\\(\\)])","\\1<font color=\"#00007F\">$keyword</font>\\2",$codebit);
}
$codebit=substr($codebit,1);
if ($afterquote!="") {
$line=$codebit.$afterquote;
} else {
$line=$codebit;
}
}
$val.=$line;
}
$val=str_replace("'", "\'", $val);
$val = str_replace("\\\"","\"",$val);
if (substr($val,0,1)=="\n" or substr($val,0,1)=="\r") {
$val=substr($val,1);
}
return "</normalfont><blockquote><pre><smallfont>visual basic code:</smallfont><hr>" . str_replace("<br>", "", $val) . "<hr></pre><normalfont></blockquote>";
}
?>
Users can then use [vbcode] tags to access this.
I know that this is not very useful for many people, but it could be easily modified for other programming languages.
John
[edit - there's something funny going on with the slashes in the PHP code. Quote this message, and use the code straight from the reply window to get it accurately within any escaping problems.]