<http://forum.pspad.com/read.php?f=2&i=10389&t=10389>
----------------------------------------------------------------
I wrote a little Javascript module to extract database table names from a
(PHP in my case) program page. In case you find it useful, here it is:
// JavaScript routines to search for table names in SQL statements.
module_name = "DBExtract";
module_ver = "0.001b";
function ArrayFrom(strRegExp)
{var edtCurrent = newEditor();
edtCurrent.assignActiveEditor();
var rex = new RegExp(strRegExp,'img');
var varResult = edtCurrent.text().match(rex);
if(varResult==null)
{varResult = new Array();}
return varResult; }
function DeleteToTable(arr)
{var rex = new
RegExp('\\bDELETE\\b.FROM\\b.([a-z0-9_\\-]*)\\b', 'im')
for(var numCount=0; numCount<arr.length; numCount++)
{arr[numCount] = arr[numCount].match(rex)[1];}
return arr; }
function DisplayArray(arrText)
{var edtNew = newEditor();
edtNew.newFile();
var strList = '';
for(var numCount=0; numCount<arrText.length; numCount++)
{strList += arrText[numCount] + '\n';}
edtNew.text(strList); }
function DistinctElements(arrText)
{var intCount = 1;
var arrResult = new Array();
arrText.sort();
if(arrText.length>0)
{arrResult[0] = arrText[0];
while(intCount<arrText.length)
{if(arrText[intCount]!=arrText[intCount-1])
{arrResult[arrResult.length] = arrText[intCount];}
intCount++; }
}
return arrResult; }
function ExtractTables()
{var arrPhrases =
PhrasesToTable(ArrayFrom('\\s(FROM|JOIN)\\s+(\\w+)'));
arrPhrases =
arrPhrases.concat(HandlerToTable(ArrayFrom('HANDLER\\s+(\\w+)\\s+OPEN')));
arrPhrases =
arrPhrases.concat(LastWordsOf(ArrayFrom('\\b(ALTER|DROP|CREATE)\\b.TABLE\\b.(IF\\b.EXISTS\\b.){0,1}([a-z0-9_\\-]){1,}')));
arrPhrases =
arrPhrases.concat(LastWordsOf(ArrayFrom('\\b(INSERT|REPLACE)\\b.INTO\\b.([a-z0-9_\\-])*')));
arrPhrases =
arrPhrases.concat(UpdateToTable(ArrayFrom('\\bUPDATE\\b.([a-z0-9_\\-])*\\b.SET\\b')));
arrPhrases =
arrPhrases.concat(DeleteToTable(ArrayFrom('\\bDELETE\\b.FROM\\b.([a-z0-9_\\-]*)\\b')));
if(arrPhrases.length==0)
{echo('No table names were found.');}
else
{DisplayArray(DistinctElements(arrPhrases));}
}
function HandlerToTable(arrHandlers)
{for(var numCount=0; numCount<arrHandlers.length; numCount++)
{arrHandlers[numCount] =
arrHandlers[numCount].substring(8,arrHandlers[numCount].length-5);
while(arrHandlers[numCount].substr(0,1)==' ')
{arrHandlers[numCount] =
arrHandlers[numCount].substr(1);}
while(arrHandlers[numCount].substr(arrHandlers[numCount].length-2,1)=='
')
{arrHandlers[numCount] =
arrHandlers[numCount].substring(0,arrHandlers[numCount].length-2);}
}
return arrHandlers; }
function LastWordsOf(arr)
{var rex = new RegExp('\\b([a-z0-9_\\-]*)$', 'im')
for(var numCount=0; numCount<arr.length; numCount++)
{var varResult = arr[numCount].match(rex);
if(varResult)
{arr[numCount] = arr[numCount].match(rex)[1];}
else
{arr[numCount] = '';}
}
return arr; }
function PhrasesToTable(arrPhrases)
{for(var numCount=0; numCount<arrPhrases.length; numCount++)
{arrPhrases[numCount] = arrPhrases[numCount].substr(5);
while(arrPhrases[numCount].substr(0,1)==' ')
{arrPhrases[numCount] = arrPhrases[numCount].substr(1);}
}
return arrPhrases; }
function UpdateToTable(arr)
{var rex = new
RegExp('\\bUPDATE\\b.([a-z0-9_\\-]*)\\b.SET\\b', 'im')
for(var numCount=0; numCount<arr.length; numCount++)
{arr[numCount] = arr[numCount].match(rex)[1];}
return arr; }
function Init()
{addMenuItem('Extract table names', 'Database',
'ExtractTables');}
--
PSPad freeware editor http://www.pspad.com