22

replace 替换参数

先来看一个简单的例子吧。

替换后的 str 是什么呢?
是 ”123$’321″ 。。。吗??
如果你的浏览器是 IE6-8 的话,确实是这个结果,可是那只是变态IE的结果。
标准浏览器下会是什么呢?

竟然是 ”123321321″ 为什么会是这个结果呢?
还是看权威的文档吧,《Specifying a string as a parameter》。
在这里,我们可以看到 $$, $&, $, $' 和 $n/$nn 的格式。
相信很多学过 js 正则的应该都用印象。
其实我一直以为只有在正则里才能用这些替换参数,直到前些天被坑才真正掌握这个知识点。

其实 $$, $&, $, $’ 在普通字符串替换时也可以使用
$$ 表示 $ 字符
$& 表示匹配到的字符
$` 表示匹配到的字符之前的那部分
$’ 表示匹配到的字符之后的那部分
但是 $n 或 $nn 只有在正则模式捕获组才能使用。

例如

 

十一 07

织梦获取文章链接的函数GetOneArchive

在某自自定义的会员页面中调用指定栏目(typeid=’36′)最新文章,前提是这个页面允许直接使用PHP代码,循环中使用GetOneArchive函数,带入文章ID,返回的是数组,$url['arcurl']即为此文章链接。

 

10

修改Discuz论坛的浏览量为每次增加随机数

文件位置:/source/module/forum/forum_viewthread.php

对函数viewthread_updateviews进行修改,约1025行到1049行。

一般来讲,修改如下代码

意为每次浏览增加2~9之间(含2和9)的随机数更新数据库中的记录。

但是这么修改也不是绝对的可以改变浏览量,还要结合网站管理后台的设置。

如果按上面的修改方法不好使,可以进入后台,按下面方法设置:

后台>>全局>>性能优化>>服务器优化>>是否优化更新主题浏览量

设置为“否” >> 提交

另外,也可以把下面这项设置为“否”,

后台>>全局>>性能优化>>服务器优化>>查看数开启防刷新

 

15

PHP中extract()的使用方法

年前年后没什么活儿,闲着没事时准备把织梦折采集功能提出来,经过改造移植进Destoon网站系统。在改造的过程中,也碰到了很多新知识来学习。

Destoon源码根目录common.inc.php文件约第80多行,源码如下:

if($_POST) extract($_POST, EXTR_SKIP);
if($_GET) extract($_GET, EXTR_SKIP);

注:不要对不能信任的数据使用 extract()

测试实例:

form.html

action.php

extract(),它的主要作用是将数组展开,键名(name)作为变量名,元素值(value)为变量值,可以说为数组的操作提供了另外一个方便的工具,比方说,可以很方便的提取$_POST或者$_GET的元素,对表单提交过来的内容不用一一赋值。

int extract ( array $var_array [, int $extract_type [, string $prefix ]] )

extract() 检查每个键名看是否可以作为一个合法的变量名,同时也检查和符号表中已有的变量名的冲突。对待非法/数字和冲突的键名的方法将根据 extract_type 参数决定。可以是以下值之一:

EXTR_OVERWRITE
如果有冲突,覆盖已有的变量。
EXTR_SKIP
如果有冲突,不覆盖已有的变量。
EXTR_PREFIX_SAME
如果有冲突,在变量名前加上前缀 prefix 。
EXTR_PREFIX_ALL
给所有变量名加上前缀 prefix 。自 PHP 4.0.5 起这也包括了对数字索引的处理。
EXTR_PREFIX_INVALID
仅在非法/数字的变量名前加上前缀 prefix 。本标记是 PHP 4.0.5 新加的。
EXTR_IF_EXISTS
仅在当前符号表中已有同名变量时,覆盖它们的值。其它的都不处理。可以用在已经定义了一组合法的变量,然后要从一个数组例如 $_REQUEST 中提取值覆盖这些变量的场合。本标记是 PHP 4.2.0 新加的。
EXTR_PREFIX_IF_EXISTS
仅在当前符号表中已有同名变量时,建立附加了前缀的变量名,其它的都不处理。本标记是 PHP 4.2.0 新加的。
EXTR_REFS
将变量作为引用提取。这有力地表明了导入的变量仍然引用了 var_array 参数的值。可以单独使用这个标志或者在 extract_type 中用 OR 与其它任何标志结合使用。本标记是 PHP 4.3.0 新加的。
如果没有指定 extract_type ,则被假定为 EXTR_OVERWRITE。

注意 prefix 仅在 extract_type 的值是 EXTR_PREFIX_SAME,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS 时需要。如果附加了前缀后的结果不是合法的变量名,将不会导入到符号表中。前缀和数组键名之间会自动加上一个下划线。

extract() 的一种可能用法是将 wddx_deserialize() 返回的结合数组中的内容导入到符号表变量中去。

Example#1 extract() 例子

上例将输出:

blue, large, sphere, medium

$size 没有被覆盖,因为指定了 EXTR_PREFIX_SAME,这使得 $wddx_size 被建立。如果指定了 EXTR_SKIP,则 $mrdede_size 也不会被建立。EXTR_OVERWRITE 将使 $size 的值为“medium”,EXTR_PREFIX_ALL 将建立新变量 $mrdede_color,$mrdede_size 和 $mrdede_shape。

必须使用关联数组,数字索引的数组将不会产生结果,除非用了 EXTR_PREFIX_ALL 或者 EXTR_PREFIX_INVALID。

25

解决织梦自定义字段数据类型为“图片”时的地址无法正确调用问题

找到文件/include/extend.func.php,系统预留的自定义函数接口文件,在文件最后加入如下函数,可以直接复制,如果在文件最后有“?>”,那就加在他的内部的最后位置,有人说有,但是我从来没见过。

20

ECSHOP goods表字段分析

goods_id                         产品id
cat_id                              分类id
goods_sn                       产品编码
goods_name                  产品名称
goods_smallname         产品副名称
goods_name_style        产品名称 风格(加粗,颜色等)
click_count                    点击量
brand_id                        品牌id
provider_name              空
goods_number             库存
goods_weight               产品重量
market_price                市场价格
shop_price                   商店价格
promote_price             促销价格
promote_start_date    促销开始日期
promote_end_date     促销结束日期
warn_number             仓库警告最低数量
keywords                    商品关键词
goods_brief                商品简介
goods_desc               商品描述
goods_thumb            商品缩略图 100*100
goods_img                商品大图  230*230
original_img              商品中图(原始)  100*199
is_real                       是否是实物
extension_code        如果不是实物 则是什么品类
is_on_sale                是否上架
is_alone_sale
is_shipping              是否包运费
integral                    积分实际积分/100
add_time                添加实际
sort_order             ec内部为100 还需查
is_delete               是否是删除状态
is_best                  是否是精品
is_new                  是否是最新
is_hot                   是否是最热
is_promote          是否是促销
bonus_type_id          红包类型id
last_update               最后一次更新时间
goods_type               待验证(商品类型) 可为0
seller_note                空值
give_integral              -1
rank_integral            空
suppliers_id             空
is_check                  空
tb_iid                        空
tb_data                    空

15

Discuz嵌入点列表(插件钩子)

Discuz模板文件中的插件钩子(插件嵌入点):

Discuz插件钩子代码例子:

Discuz插件钩子的作用在于能让插件在指定的一些位置输出有关代码!在DZ7.x-DX1.5中插件钩子并不显得很重要,但是随着插件应用的不断普及,插件创作者的不断加入,插件钩子在模板中的地位尤其显得格外重要,如果缺少了程序必须的插件钩子,可能会造成自带系统插件功能受到影响!所以我们在制作模板的时候一定要参考默认模板中的插件钩子位置进行合理的安排!除非你觉得某个插件钩子在自己的模板中并不需要,否则请保留插件钩子代码!

Discuz插件嵌入点列表

一、全局(common/)

extcredits.htm
string spacecp_credit_extra
faq.htm
string faq_extra
footer.htm
string global_footer
string global_footerlink
header.htm
string global_cpnav_top (X2.5)
string global_cpnav_extra1
string global_cpnav_extra2
string global_usernav_extra1
string global_usernav_extra2
string global_usernav_extra3
string global_usernav_extra4 (X2.5)
string global_nav_extra (X2.5)
string global_header
userabout.htm
array global_userabout_top
string userapp_menu_top
string userapp_menu_middle
array global_userabout_bottom

二、论坛(forum/)

collection_all.htm (X2.5)
string collection_index_top
string collection_index_bottom
collection_comment.htm (X2.5)
string collection_nav_extra
collection_index.htm (X2.5)
string collection_index_top
string collection_index_bottom
collection_mycollection.htm (X2.5)
string collection_index_top
string collection_index_bottom
collection_nav.htm (X2.5)
string collection_nav_extra
collection_view.htm (X2.5)
string collection_viewoptions
string collection_view_top
string collection_threadlistbottom
string collection_relatedop
string collection_view_bottom
string collection_side_bottom
discuz.htm
string index_status_extra
string index_nav_extra (X2.5)
string index_top
string index_catlist_top (X2.5)
array index_favforum_extra (X2.5)
array index_catlist (X2.5)
array index_forum_extra (X2.5)
array index_forum_extra (X2.5)
string index_middle
string index_bottom
string index_side_top
string index_side_bottom
discuzcode.htm
array viewthread_attach_extra (X2.5)
editor_menu_forum.htm
string post_image_btn_extra
string post_image_tab_extra
string post_attach_btn_extra
string post_attach_tab_extra
forumdisplay.htm
string forumdisplay_leftside_top
string forumdisplay_leftside_bottom
string forumdisplay_forumaction
string forumdisplay_modlink
string forumdisplay_top
string forumdisplay_middle
string forumdisplay_postbutton_top
string forumdisplay_threadtype_inner (X2.5)
string forumdisplay_filter_extra (X2.5)
string forumdisplay_threadtype_extra (X2.5)
string forumdisplay_bottom
string forumdisplay_side_top
string forumdisplay_side_bottom
forumdisplay_fastpost.htm
string forumdisplay_fastpost_content
string forumdisplay_fastpost_func_extra
string forumdisplay_fastpost_ctrl_extra
string global_login_text
string forumdisplay_fastpost_btn_extra
string forumdisplay_fastpost_sync_method
forumdisplay_list.htm
string forumdisplay_filter_extra
array forumdisplay_thread
array forumdisplay_thread_subject (X2.5)
array forumdisplay_author
array forumdisplay_thread (X2.5)
array forumdisplay_author (X2.5)
string forumdisplay_threadlist_bottom (X2.5)
string forumdisplay_postbutton_bottom
forumdisplay_sort.htm (X2.5)
string forumdisplay_postbutton_bottom
forumdisplay_subforum.htm (X2.5)
array forumdisplay_subforum_extra
array forumdisplay_subforum_extra
guide.htm
string guide_nav_extra
string guide_top
string guide_bottom
guide_list_row.htm (X2.5)
array forumdisplay_thread
index_navbar.htm
string index_navbar
post.htm
string post_top
string post_middle
string post_btn_extra
string post_sync_method
string post_bottom
post_activity.htm
string post_activity_extra
post_debate.htm
string post_debate_extra
post_editor_body.htm
string post_editorctrl_right
string post_editorctrl_left
string post_editorctrl_top
string post_editorctrl_bottom
post_editor_option.htm
string post_side_top
string post_side_bottom
post_infloat.htm
string post_infloat_top
string post_infloat_middle
string post_infloat_btn_extra
post_poll.htm
string post_poll_extra
post_reward.htm
string post_reward_extra
post_trade.htm
string post_trade_extra
topicadmin_modlayer.htm
string forumdisplay_modlayer
string modcp_modlayer
trade_info.htm
string viewthread_tradeinfo_extra
viewthread.htm
string viewthread_top
string viewthread_postbutton_top
string viewthread_modoption
string viewthread_beginline (X2.5)
string viewthread_title_extra
string viewthread_title_row
string viewthread_middle
string viewthread_bottom
viewthread_activity.htm
string viewthread_activity_extra1
string viewthread_activity_extra2
viewthread_fastpost.htm
string viewthread_fastpost_side
string viewthread_fastpost_content
string viewthread_fastpost_func_extra
string viewthread_fastpost_ctrl_extra
string global_login_text
string viewthread_fastpost_btn_extra (X2.5)
viewthread_from_node.htm
array viewthread_postheader
array viewthread_postheader
array viewthread_postheader
array viewthread_endline
viewthread_node.htm
array viewthread_profileside
array viewthread_imicons
array viewthread_magic_user
array viewthread_avatar
array viewthread_sidetop
array viewthread_sidebottom
array viewthread_postheader
string viewthread_modaction (X2.5)
string viewthread_share_method
string viewthread_useraction
array viewthread_postsightmlafter (X2.5)
array viewthread_postfooter
array viewthread_postaction (X2.5)
string viewthread_magic_thread
array viewthread_magic_post
array viewthread_endline
viewthread_node_body.htm
array viewthread_posttop
string global_login_text
array viewthread_postbottom
viewthread_poll.htm
string viewthread_poll_top
string viewthread_poll_bottom
viewthread_portal.htm
string viewthread_useraction_prefix
string viewthread_useraction
string viewthread_side_bottom
viewthread_trade.htm
array viewthread_trade_extra

Continue reading

14

解决无法使用电脑访问调试discuz手机版或触屏版问题

一、discuz电脑无法访问标准手机版的方法:

现在需要修改2个文件,即可用电脑浏览discuz的手机版本:

1、文件./source/function/function_core.php

查找 :function checkmobile() {

在他的下一行增加如下代码:
return true; //此为加上的内容

2、文件./source/class/discuz/discuz_application.php

查找dheader("Location:misc.php?mod=mobile");

替换成//dheader("Location:misc.php?mod=mobile");

也就是注释掉。

现在文件改好了,默认是进入标准版的手机页面,想要可以进入触屏版页面,再继续往下看:

二、解决电脑无法访问discuz手机触屏版的方法:

文件static/js/mobile/common.js

找到如下代码(其实就是此文件的第1和第2行):

var supporttouch = "ontouchend" in document;
!supporttouch && (window.location.href = 'forum.php?mobile=1');

也就是文件开头的那两行代码,罪魁祸首就是这个ontouchend,这个是只有手机才会有的事件,pc浏览器怎么也是不存在的,因此就永久跳到了标准版去了。

去掉这两行代码(最好是注释掉,不要删除),这样就可以使用电脑访问discuz手机触屏版了!

注:清除网站缓存、浏览器缓存、手机缓存等等各种缓存,哈哈。

其它:

1.标准手机版链接形式:http://dedecms.mrdede.com/forum.php?mobile=1
2.触屏版链接形式:http://dedecms.mrdede.com/forum.php?mobile=2

14

WordPress网站提示:Cannot modify header information – headers already sent by出错的原因

WordPress网站提示:Cannot modify header information – headers already sent by出错的原因,就我个人的网站来说,问题是出在之前改过一个文件,我把保存格式改为了utf-8了,因为我回想一下我没改过什么东西,把文件改回来还是不行,后来在网上找来找去,发现可能是文件保存格式问题,转换了一下动过的文件的文件格式,转换为utf-8无MOB格式,好了。

QQ20151014152151

所以,如果碰到这个问题的朋友,可以试着回想一下动过了哪些文件,之后使用notepad ++编辑工具或者其它专业工具查看文件格式是不是utf-8无MOB格式,如果不是就转换过来,最好不用记事本工具。

http://mrdede.com

06

点击ECShop自定义导航栏出错提示“……navigator.php on line 382”

PHP Warning: Illegal string offset 'cat_name' in D:\ECShop\admin\navigator.php on line 382
PHP Warning: Illegal string offset 'view_name' in D:\ECShop\admin\navigator.php on line 382

增加对$val的判断力