rendered paste body<?phpclass template_core{ function compile_template( $template_dir, $template_name ) { // /\{[a-z]+\.[a-z_]+\}/ ignore kthx. $dir = "templates/$template_dir/$template_name.tpl"; $template = file_get_contents( $dir ); $replaceall = preg_match_all( "/\{[a-z]+\.[a-z_]+\}/", $template, $matches, PREG_OFFSET_CAPTURE ); //print_r($lawl); for( $i = 0; $i <= (count( $matches ) + 1); $i++ ) { //echo( $matches[0][$i][0] ); /** * First we get the stuff we're gonna be replacing. */ $get_command = str_replace( "{", "", $matches[0][$i][0] ); $get_command = str_replace( "}", "", $get_command ); $get_command = explode( ".", $get_command ); // That's it, we have the commands, we just need to get the offset, but we can do that later. switch( $get_command[0] ) { case "phrase": $parse = $this->parse_phrase( $get_command[1] ); break; case "setting": $parse = $this->parse_setting( $get_command[1] ); break; } $get_offset = $matches[0][$i][1]; $get_length = strlen( $matches[0][$i][0] ); $get_new_len = strlen( $parse ); if( $get_length > $get_new_len ) { $get_new_length = $get_new_len; $get_new_offset = $get_offset - ($get_length - $get_new_len); } elseif( $get_length == $get_new_len ) { $get_new_length = $get_length; $get_new_offset = $get_offset; } else { $get_new_length = $get_new_len; $get_new_offset = $get_offset + ($get_new_len - $get_length); } if( isset( $template_replaced ) ) { $template_replaced_start = substr( $template_replaced, 0, $get_new_offset ); $template_replace_end = substr( $template_replaced, $get_new_offset, $get_new_length ); $template_replaced = $template_replaced_start . $parse . $template_replace_end; } else { $template_replaced_start = substr( $template, 0, $get_offset ); $template_replace_end = substr( $template, $get_offset, $get_length ); $template_replaced = $template_replaced_start . $parse . $template_replace_end; } } echo( $template_replaced ); } function parse_phrase( $phrase_name ) { $return = $this->core->db->fetch_array( "SELECT `cont` FROM `phrases` WHERE `name` = '$phrase_name'" ); if($return == false) { return "Could not parse."; } else { return $return; } } function parse_setting( $setting_name ) { }}?>