PHP Tag parsing
Kiek laiko man kainavo tos parsinimo funkcijos.....
o dabar susidūriau su preg_replace_callback. du kodo gabalai palyginimui:
if( !is_file( './design/test.htm') )
return FALSE;
$file_contents =stripslashes( file_get_contents( './design/test.htm' ) );
preg_match_all( '/\{OUTPUT([0-9]*?)\}/i', $file_contents, $arr, PREG_OFFSET_CAPTURE|PREG_PATTERN_ORDER );
$numbers_count =count( $arr[1] );
if( $numbers_count == 0 )
return $file_contents;
$outp =substr( $file_contents, 0, $arr[0][0][1] ).
(isset($outputs[$arr[1][0][0] -1]) ? $outputs[$arr[1][0][0]-1] :'');
for( $i =1; $i<$numbers_count; $i++ )
{
$x =$arr[0][$i-1][1] +strlen($arr[0][$i-1][0]);
$outp .=substr( $file_contents, $x, $arr[0][$i][1] -$x)
.(isset($outputs[$arr[1][$i][0] -1]) ? $outputs[$arr[1][$i][0] -1] : '' );
}
$outp .=substr( $file_contents, $arr[0][$i-1][1] +strlen($arr[0][$i-1][0]));
echo outp;
ir
$file_contents =stripslashes( file_get_contents( './design/test.htm' ) );
echo preg_replace_callback( '/\{OUTPUT([0-9]*?)\}/i', create_function( '$matches',
'{global $outputs;
return (isset($outputs[$matches[\'1\']-1]) ? $outputs[$matches[\'1\']-1] : \'\' );}' ),
$file_contents);
. Ka ir bekalbėti apie didesnių tagų (sorry žymių) parsinimą... baisu, pagalvojus kiek darbo veltui...