对高手而言可能很简单~~我初学PHP~在DZ的论坛上问这个问题问了几天都没人回答!唉~还是这里比较热情! 请高手再帮个忙!简单的示范一下吧! 比如列举几个要用到的函数~然后说说注意什么问题! 我还以为摸版可以直接include进来,可试了以后include进来摸版里的函数都不能用!有点笨哈!自学是这样的!所以希望有人指点一下下!
应该是通过函数提取值 .....................................................................................................................
asp里是写类,将标签生成写成类,大致也就是些替换了,比如 aa=replace(aa,"<title>bb</title>","{bb}") ,以上是个比较简单得,替换页面标题得,这样就程序和代码分离了。。 php也是如此
PHP: <?php /* [Discuz!] (C)2001-2006 Comsenz Inc. This is NOT a freeware, use is subject to license terms $RCSfile: template.func.php,v $ $Revision: 1.3 $ $Date: 2006/02/23 13:44:02 $ */ if(!defined('IN_DISCUZ')) { exit('Access Denied'); } function parse_template($file, $templateid, $tpldir) { global $language; $nest = 5; $tplfile = DISCUZ_ROOT."./$tpldir/$file.htm"; $objfile = DISCUZ_ROOT."./forumdata/templates/{$templateid}_$file.tpl.php"; if(!@$fp = fopen($tplfile, 'r')) { dexit("Current template file './$tpldir/$file.htm' not found or have no access!"); } elseif(!include_once language('templates', $templateid, $tpldir)) { dexit("<br>Current template pack do not have a necessary language file 'templates.lang.php' or have syntax error!"); } $template = fread($fp, filesize($tplfile)); fclose($fp); $var_regexp = "((\\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)(\[[a-zA-Z0-9_\-\.\"\'\[\]\$\x7f-\xff]+\])*)"; $const_regexp = "([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)"; $template = preg_replace("/([\n\r]+)\t+/s", "\\1", $template); $template = preg_replace("/\<\!\-\-\{(.+?)\}\-\-\>/s", "{\\1}", $template); $template = preg_replace("/\{lang\s+(.+?)\}/ies", "languagevar('\\1')", $template); $template = str_replace("{LF}", "<?=\"\\n\"?>", $template); $template = preg_replace("/\{(\\\$[a-zA-Z0-9_\[\]\'\"\$\.\x7f-\xff]+)\}/s", "<?=\\1?>", $template); $template = preg_replace("/$var_regexp/es", "addquote('<?=\\1?>')", $template); $template = preg_replace("/\<\?\=\<\?\=$var_regexp\?\>\?\>/es", "addquote('<?=\\1?>')", $template); $template = "<? if(!defined('IN_DISCUZ')) exit('Access Denied'); ?>\n\n$template"; $template = preg_replace("/[\n\r\t]*\{template\s+([a-z0-9_]+)\}[\n\r\t]*/is", "\n<? include template('\\1'); ?>\n", $template); $template = preg_replace("/[\n\r\t]*\{template\s+(.+?)\}[\n\r\t]*/is", "\n<? include template(\\1); ?>\n", $template); $template = preg_replace("/[\n\r\t]*\{eval\s+(.+?)\}[\n\r\t]*/ies", "stripvtags('\n<? \\1 ?>\n','')", $template); $template = preg_replace("/[\n\r\t]*\{echo\s+(.+?)\}[\n\r\t]*/ies", "stripvtags('\n<? echo \\1; ?>\n','')", $template); $template = preg_replace("/[\n\r\t]*\{elseif\s+(.+?)\}[\n\r\t]*/ies", "stripvtags('\n<? } elseif(\\1) { ?>\n','')", $template); $template = preg_replace("/[\n\r\t]*\{else\}[\n\r\t]*/is", "\n<? } else { ?>\n", $template); for($i = 0; $i < $nest; $i++) { $template = preg_replace("/[\n\r\t]*\{loop\s+(\S+)\s+(\S+)\}[\n\r]*(.+?)[\n\r]*\{\/loop\}[\n\r\t]*/ies", "stripvtags('\n<? if(is_array(\\1)) { foreach(\\1 as \\2) { ?>','\n\\3\n<? } } ?>\n')", $template); $template = preg_replace("/[\n\r\t]*\{loop\s+(\S+)\s+(\S+)\s+(\S+)\}[\n\r\t]*(.+?)[\n\r\t]*\{\/loop\}[\n\r\t]*/ies", "stripvtags('\n<? if(is_array(\\1)) { foreach(\\1 as \\2 => \\3) { ?>','\n\\4\n<? } } ?>\n')", $template); $template = preg_replace("/[\n\r\t]*\{if\s+(.+?)\}[\n\r]*(.+?)[\n\r]*\{\/if\}[\n\r\t]*/ies", "stripvtags('\n<? if(\\1) { ?>','\n\\2\n<? } ?>\n')", $template); } $template = preg_replace("/\{$const_regexp\}/s", "<?=\\1?>", $template); $template = preg_replace("/ \?\>[\n\r]*\<\? /s", " ", $template); if(!@$fp = fopen($objfile, 'w')) { dexit("Directory './forumdata/templates/' not found or have no access!"); } flock($fp, 2); fwrite($fp, $template); fclose($fp); } function addquote($var) { return str_replace("\\\"", "\"", preg_replace("/\[([a-zA-Z0-9_\-\.\x7f-\xff]+)\]/s", "['\\1']", $var)); } function languagevar($var) { if(isset($GLOBALS['language'][$var])) { return $GLOBALS['language'][$var]; } else { return "!$var!"; } } function stripvtags($expr, $statement) { //$expr = str_replace("\\\"", "\"", preg_replace("/\<\?\=(\\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\"\'\[\]\$\x7f-\xff]*)\?\>/s", "\\1", $expr)); $expr = str_replace("\\\"", "\"", preg_replace("/\<\?\=(\\\$.+?)\?\>/s", "\\1", $expr)); $statement = str_replace("\\\"", "\"", $statement); return $expr.$statement; } ?> 高手能帮我注释一下吗?