Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[BUG] 本人二次开发UCHOME中,发现的几点疑问

[复制链接]
tonygege 发表于 2010-4-11 20:32:48 | 显示全部楼层 |阅读模式
本帖最后由 tonygege 于 2010-4-11 21:09 编辑

本人二次开发UCHOME中,发现的几点疑问:

  • function_template.php文件中 parse_template函数解析模板时,会出现如果if loop嵌套超过6层,则会替换失败的问题

    1.         for($i = 0; $i < 6; $i++) {
    2.           $temp_template = $template;
    3.                 $template = preg_replace("/\{loop\s+(\S+)\s+(\S+)\}(.+?)\{\/loop\}/ies", "stripvtags('<?php if(is_array(\\1)) { foreach(\\1 as \\2) { ?>','\\3<?php } } ?>')", $template);
    4.                 $template = preg_replace("/\{loop\s+(\S+)\s+(\S+)\s+(\S+)\}(.+?)\{\/loop\}/ies", "stripvtags('<?php if(is_array(\\1)) { foreach(\\1 as \\2 => \\3) { ?>','\\4<?php } } ?>')", $template);
    5.                 $template = preg_replace("/\{if\s+(.+?)\}(.+?)\{\/if\}/ies", "stripvtags('<?php if(\\1) { ?>','\\2<?php } ?>')", $template);
    6.         }
    复制代码
    建议修改为以下,这样可以在替换无变化时,不需要再正则替换了:

    1.         while(true) {
    2.           $temp_template = $template;
    3.                 $template = preg_replace("/\{loop\s+(\S+)\s+(\S+)\}(.+?)\{\/loop\}/ies", "stripvtags('<?php if(is_array(\\1)) { foreach(\\1 as \\2) { ?>','\\3<?php } } ?>')", $template);
    4.                 $template = preg_replace("/\{loop\s+(\S+)\s+(\S+)\s+(\S+)\}(.+?)\{\/loop\}/ies", "stripvtags('<?php if(is_array(\\1)) { foreach(\\1 as \\2 => \\3) { ?>','\\4<?php } } ?>')", $template);
    5.                 $template = preg_replace("/\{if\s+(.+?)\}(.+?)\{\/if\}/ies", "stripvtags('<?php if(\\1) { ?>','\\2<?php } ?>')", $template);
    6.                 //如果替换无变化,则退出循环
    7.                 if($temp_template == $template){
    8.                   break;
    9.                 }
    10.         }
    复制代码
  • script_ajax.js文件中ajaxget函数针对ajaxerror或ajaxok的返回时,evalscript有效执行时的返回语法是怎样的?我尝试过这样写
    1. <script>alert(1);</script><ajaxerror>
    复制代码
    却不成功。

    1. function evalscript(s) {
    2.         if(s.indexOf('<script') == -1) return s;
    3.         var p = /<script[^\>]*?>([^\x00]*?)<\/script>/ig;
    4.         var arr = new Array();
    5.         while(arr = p.exec(s)) {
    6.                 var p1 = /<script[^\>]*?src="([^\>]*?)"[^\>]*?(reload="1")?(?:charset="([\w\-]+?)")?><\/script>/i;
    7.                 var arr1 = new Array();
    8.                 arr1 = p1.exec(arr[0]);
    9.                 if(arr1) {
    10.                         appendscript(arr1[1], '', arr1[2], arr1[3]);
    11.                 } else {
    12.                         p1 = /<script(.*?)>([^\x00]+?)<\/script>/i;
    13.                         arr1 = p1.exec(arr[0]);
    14.                         //获取字符集
    15.                         var re = /charset="([\w\-]+?)"/i;
    16.                         var charsetarr = re.exec(arr1[1]);
    17.                         appendscript('', arr1[2], arr1[1].indexOf('reload=') != -1, charsetarr[1]);
    18.                 }
    19.         }
    20.         return s;
    21. }
    复制代码
  • 用户头像处理时,如何规定头像middle的长宽比,现在官方给出的camera.swf,用户是可以随意调整middle头像的长宽比,这样用户的头像显示尺寸就千奇百怪了。建议开放规定长宽比的配置。

 楼主| tonygege 发表于 2010-4-11 20:34:32 | 显示全部楼层
自己选顶一下
回复

使用道具 举报

mynick 发表于 2010-4-12 12:40:52 | 显示全部楼层
官方的回答速度真慢。我来帮你顶一下。
回复

使用道具 举报

 楼主| tonygege 发表于 2010-4-12 19:06:13 | 显示全部楼层
是的,都一天了,没什么动静,谢谢楼上支持
回复

使用道具 举报

 楼主| tonygege 发表于 2010-4-13 21:21:37 | 显示全部楼层
没办法,顶上去
回复

使用道具 举报

 楼主| tonygege 发表于 2010-4-15 18:45:27 | 显示全部楼层
每天顶顶,心情好
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 18:52 , Processed in 0.024539 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表