<?php
#########################################
# Class Apriori 0.3.000DE #
# Modified part of VXi Web Platform #
# © RusBreathLess, 2007 #
# basileff@gmail.com #
# http://rusbreathless.livejournal.com #
#########################################
// Security check
//if(!eregi("Apriori.php",implode(";",get_included_files()))){ exit;}
// Change this string, insert your favorite db abstraction layer :-)
mysql_connect("localhost","root");
mysql_select_db("Test");
/*
Data structure:
Matcher = Pattern for search.
Replacer = Code, that evaluate and must set var $Output; Pattern text will be replaced by this variable.
Dynamic - parameter, which define, evaluate Replacer's code onу time, or for every founded pattern.
Mode - parameter, which sort "parslets" by categories. Ex: Smiles, BBCodes, Formatters, etc.
*/
class Apriori
{
function Parse($Data, $Mode)
{
global $PDO;
$Parsed = $Data;
$Parslets = mysql_query("SELECT * FROM Parslets WHERE Mode='".$Mode."'");
while ($Parslet = mysql_fetch_assoc($Parslets))
{
switch ($Parslet["Type"])
{
case 'Java': $Options = "jim"; break;
case 'GNU': $Options = "uim"; break;
case 'GREP': $Options = "gim"; break;
case 'EMACS': $Options = "cim"; break;
case 'Ruby': $Options = "rim"; break;
case 'Perl': $Options = "zim"; break;
case 'Posix': $Options = "bim"; break;
case 'PosixEx': $Options = "dim"; break;
default: $Options = "dim"; break;
}
mb_regex_set_options($Options);
$Output=null; // Variable for Parslet output.
$Inputs=array(); // Pockets for eregi. RTFM.
if (eregi($Parslet["Matcher"],$Parsed,$Inputs)) eval($Parslet["Replacer"]);
// Dynamic, or not - code must be evaluate once time
// Main cycle. For every parslet, for every match.
while (eregi($Parslet["Matcher"],$Parsed,$Inputs))
{
if ($Parslet["isDynamic"]=="True") // Dynamic?
{
$Output=null; // Clean output
eval($Parslet["Replacer"]); // Eval Replacer. Replacer's code must set "Output" variable.
};
$Parsed = str_replace($Inputs[0],$Output,$Parsed); // Replace and enjoy!
};
$Output=null;
};
return $Parsed; // Yeah!
}
};
?>
|