在字符串中连续出现的字符替换为单一字符(2 位领导批示)

如字符串 aaaabbbccccddddeeeefff

一位同学的写法:

  1. <?php
  2. $original_string = 'aaaabbbccccddddeeeefff';
  3. $splited_arr = str_split( $original_string );
  4. $unique_arr = array_unique( $splited_arr );
  5. $final_string = "";
  6. foreach ($unique_arr as $unique_str)
  7. {
  8.   $final_string .= $unique_str;
  9. }
  10. echo $final_string;
  11. ?>

 

我用正则替换:

  1. <?php
  2. $str = 'aaaabbbccccddddeeeefff';
  3. echo preg_replace("/(.)\\1+/", "\\1", $str);
  4. ?>

 

NOTE:如果字符中有中文.只能使用第一种方法.

不堪垃圾评论.新增图形验证码插件 wp-imgcode(2 位领导批示)

插件下载地址:http://blog.chweng.idv.tw/wordpress/wp-imgcode-mod/

安装并进入后台启用插件

修改模板 comments.php

1
2
3
4
5
6
7
8
9
10
11
12
<!--<p><textarea name="comment" id="comment" cols="60%" rows="10" tabindex="4"></textarea></p>
<p><input name="submit" class="s" type="submit" id="submit"  tabindex="5" value="发表留言" />
<input type="hidden" name="comment_post_ID" value="<?php echo $id; ?>" />
</p>
<?php do_action('comment_form', $post->ID); ?>-->
 
 
<p><textarea name='comment' id='comment' cols='60%' rows='10' tabindex='5'></textarea></p>
<?php do_action('comment_form', $post->ID); ?>
<p><input name='submit' type='submit' class="s" id='submit' tabindex='5' value='发表留言' />
<input type='hidden' name='comment_post_ID' value='<?php echo $id; ?>' />
</p>

NOTE:注释部分为原有的模板部分

全文阅读 »

FireFox下实现圆角border-radius (css3.0 新增)(1 位领导批示)

css3.0中新增属性: border-radius

用这个属性能实现圆角边框的效果。现在只有Mozilla/Firefox和Safari3支持该属性。

代码:


-moz-border-radius-topleft:5px;
-moz-border-radius-topright:5px;
-moz-border-radius-bottomleft:5px;
-moz-border-radius-bottomright:5px;

分别代表上左,上右,下左,下右四个角.

如果要在safari3中支持.就将前面的-moz改为-webkit

P.S.wordpress2.5以上版本的后台登录页面就用到了此属性.

传说这个月要更新Google PR了(4 位领导批示)

Google Page Rank上次的更新时间是4月30

以google PR一季度一更新的频率来看(3个月一更新还有待考证)

这次的更新应该是 7月30 号前后 再下一次就得等到10月或11月了..

手上的几个站点最差的就是这个博客了 PR值为3

不知道这次更新会达到多少

如果能精确推算出google PR值更新时间

就无敌了..

设置cookie当天内有效(0 位领导批示)

经典论坛上一位朋友的问题

我的解决方法


<?php
//设置默认时区
date_default_timezone_set('Etc/GMT-8');
//得到明天0点时的unix时间戳
$nonce_time = strtotime(date('Ymd')+1);
//相减得到过期所剩的时间
$expire_time = $nonce_time - time();
//echo $expire_time;
setcookie('test', '当天有效,到7月4号就失效哦!', $expire_time);
?>

DEDECMS5.1 Tag首页文章分类显示(2 位领导批示)

dedecms 在5.x版本新增加的 tag 标签.

在首页使用时只有row,sort与InnerText三个参数.而不能像arclist等标签一样可以用typeid参数按文章分类显示.

自己动手.修改了一下

打开 include/inc_arcpart_view.php 文件

首先找到第 222 行

1
2
3
4
5
6
}else if($tagname=="tag"){
    //自定义宏标签
    if(empty($typeid)) $typeid = $envTypeid;
    $this->dtp->Assign($tagid,
    $this->GetTags($ctag->GetAtt("row"),$ctag->GetAtt("sort"),$ctag->GetInnerText())
);

修改为:

1
2
3
4
5
6
7
}else if($tagname=="tag"){
    //自定义宏标签
    $typeid = trim($ctag->GetAtt("typeid"));
    if(empty($typeid)) $typeid = $envTypeid;
    $this->dtp->Assign($tagid,
    $this->GetTags($ctag->GetAtt("row"),$ctag->GetAtt("sort"),$ctag->GetInnerText(),$typeid)
);

全文阅读 »

Tags : , ,

弄巧成拙"银子"关键词尴尬的优化(1 位领导批示)

做网页标准化工作时要求对网站进行SEO优化.当时先拿自己的博客做小白鼠..(SEO试验,把”银子”做到GOOGLE第一)

过去半年多..期间域名由loai.cn转向了现在的zdyi.com 猛然发现..已经指向另一个QQ表情站的loai.cn在银子这个关键词上比本博还靠前-_-!!

查看: http://www.google.cn/search…e9%93%b6%e5%ad%90

全文阅读 »

Perl学习之字符串和排序(0 位领导批示)

Perl被设计成90%擅长处理文本,10%处理其余的问题。因此Perl有强大的文本处理能力,包括正则表达式。但有时正则表达式过于复杂,需要一种更简单的方法来处理字符串。

一、使用索引寻找子串

查找的方法依赖于查找的地方。如果在一个大字符串中查找,可以使用index函数。

Perl查找子串第一次在大字符串中出现的地方,返回第一个字符的位置。字符位置是从0开始编号的。如果子串在字符串的开头处找到,则index返回0。如果一个字符后,则返回1,依次类推。如果子串不存在,则返回-1。

1
2
3
my $text = "hello world!";
my $where = index($text, "wor");
print $where;#本例输出6

index函数总是报告子串出现的第一个位置。可以使用可选的第三个参数要求它从后面的某个地方开始查询,它会告诉index从什么位置开始。

NOTE:通常不能重复的查找某个子串,除非使用了循环。

如果想知道某个子串最后出现的位置。可以使用rindex 函数来做到。

1
2
3
my $text = "hello world!";
my $where = rindex($text, "l");
print $where;#本例输出9

rindex函数也有可选的第三个参数,它给出的是可能的最大值。

全文阅读 »

Perl学习之目录操作(0 位领导批示)

一、在目录树上移动

程序在某个工作目录(working directory)下运行,这是相对路径的起点。

chdir可以改变工作目录。它和Unix shell,Win command下的cd命令类似。


chdir "/test" or die "打开目录出错:$!";

错误发生时将给变量$!赋值。通常应当检查$!的值,因为它将告诉你chdir失败的原因。

工作目录会被Perl启动后的所有进程所继承。但是对于调用Perl的进程的工作目录将不会改变,因此,不能写一个Perl程序来代替shell下的cd命令。

二、Globbing

通常,shell将每个命令行中的任何的文件名模式转换成它所匹配的文件名。这被称作globbing。例如,在echo命令后使用了文件名模式*.pm,shell会将它转换成它所匹配的文件名。


my @all_files = glob "*";
foreach $v (@all_files)
{
	print $v."\n";
}

@all_files得到了当前目录下的所有文件,这些文件按照字母排序的,不包括由点(.)开头的文件。


my @all_files = glob ".* *";
foreach $v (@all_files)
{
	print $v."\n";
}

这里,我们包括了额外的 点星号(.*) 参数,来得到所有的文件(由点开头的文件,以及不由点开头的文件)。引号中两个项之间的空隔是必须的。

全文阅读 »

Perl学习之文件检验(0 位领导批示)

一、文件检测操作

如果程序会建立新的文件,在程序创建新文件之前,我们应先确定是否存在同名的文件,以免重要数据被覆盖掉。对于这种问题,我们可以使用–e选项,检测是否存在相同名字的文件。

例:


$filename = 'phper7.rar';
die "$filename 已经存在.\n"
if -e $filename;

检测文件的选项是由连接线(-)和一个字母组成,字母指测试的类型,后接被测试的文件名或文件句柄。大多数选项返回true/false值,但有少数例外。

(1)-r, -w, -x以及-o检测相应的属性对effective user 或group ID是否为真,它是指实际负责运行此程序的用户。

(2)Unix文件系统包括几种类型,分别可有-f, -d, -l, -S, -p, -b, 以及-c检测,任何一种必属于其中之一。

(3)时间检测,-M, -A, -C(均大写),返回系统最后一次修改,访问,以及索引节点被修改到现在的天数。

(4)-T和-B分别检测一个文件是文本的还是二进制的。

(5)当给定的文件句柄是一个TTY(系统函数isatty()的返回结果,不能对文件名使用这个测试)时,-t文件检测项返回true。

全文阅读 »

随机显示的10篇日志

评论最多的10篇日志

浏览最多的10篇日志