<?php
/*
* test_safe_html_filter.php
*
* @(#) $Header: /home/mlemos/cvsroot/markupparser/test_safe_html_filter.php,v 1.10 2009/08/21 05:21:12 mlemos Exp $
*
*/
require_once('css_parser.php');
require_once('dtd_parser.php');
require_once('filecacheclass.php');
require_once('markup_parser.php');
require_once('markup_filter_validator.php');
require_once('markup_filter_safe_html.php');
$message_file = ((IsSet($_SERVER['argv']) && count($_SERVER['argv'])>1) ? $_SERVER['argv'][1] : 'test/sample/simple.html');
$filter = new markup_filter_safe_html_class;
/* Set to 1 if you need to track line numbers of errors or element
* positions
*/
$filter->track_lines = 1;
/* Add here the proprietary CSS properties that you know that are safe
* to allow.
*/
$filter->safe_proprietary_css_properties = array(
'-moz-border-radius'=>array(),
'-moz-border-radius-topleft'=>array(),
'-moz-border-radius-topright'=>array(),
'-moz-border-radius-bottomleft'=>array(),
'-moz-border-radius-bottomright'=>array(),
'-webkit-border-radius'=>array(),
'-webkit-border-top-left-radius'=>array(),
'-webkit-border-top-right-radius'=>array(),
'-webkit-border-bottom-left-radius'=>array(),
'-webkit-border-bottom-right-radius'=>array(),
);
/* Add here the CSS property function names properties that you know
* that are safe to allow.
*/
$filter->safe_css_property_functions = array(
'alpha'=>array()
);
$parameters=array(
'File'=>$message_file,
/* Read a markup from a string instead of a file */
/* 'Data'=>'<html><head><title>My HTML data string</title></head>
<body><p>My HTML data string</p></body></html>', */
/* Set to 1 if want to filter HTML that only contains the body
part of a page */
'OnlyBody'=>0,
/* Set to the path of the directory where cache files will be
stored with parsed DTD information to avoid parsing overhead,
otherwise it may become very slow. */
'DTDCachePath'=>'',
);
/*
* The following lines are for testing purposes.
* Remove these lines when adapting this example to real applications.
*/
if(defined('__TEST'))
{
if(IsSet($__test_options['parameters']))
$parameters = $__test_options['parameters'];
}
$start = microtime();
if(($success = $filter->StartParsing($parameters)))
{
$output = '';
do
{
if(!($success = $filter->Parse($end, $elements)))
break;
$te = count($elements);
for($e = 0; $e < $te; ++$e)
{
/*
var_dump($elements[$e]);
*/
if(!($success = $filter->RewriteElement($elements[$e], $markup)))
break;
$output.= $markup;
}
}
while(!$end);
if($success)
$success = $filter->FinishParsing();
if($success)
echo $output;
}
$end = microtime();
if(!$success)
{
echo 'Markup parsing error: '.$filter->error.' at position '.$filter->error_position;
if($filter->track_lines
&& $filter->GetPositionLine($filter->error_position, $line, $column))
echo ' line '.$line.' column '.$column;
echo "\n";
}
for($warning = 0, Reset($filter->warnings); $warning < count($filter->warnings); Next($filter->warnings), $warning++)
{
$w = Key($filter->warnings);
echo 'Warning: ', $filter->warnings[$w], ' at position ', $w;
if($filter->track_lines
&& $filter->GetPositionLine($w, $line, $column))
echo ' line '.$line.' column '.$column;
echo "\n";
}
if(!defined('__TEST'))
echo 'Timer: ', doubleval(strtok($end,' ')) + doubleval(strtok('')) - doubleval(strtok($start,' ')) - doubleval(strtok('')), "\n";
?>
|