分享一个支持中文字符及英文字符混合的php字符串分割函数

2010-6-7 寒川 网页编程

php分割字符串函数可以用str_split()或explode(),但是此两个函数有时候不能达到自己想要的结果,str_split()分割中文字符的时候出现乱码;explode()分割时需要指定分割符,不能按长度分割,下面这个函数支持中英文混合字符分割,感觉挺好用的。。。

function cut_str($string, $length) {
if(strlen($string) <= $length) {
return $string;
}
$strcut = '';
for($i = 0; $i < $length; $i++) {
$strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
}
return $strcut;
}

 

 

标签: php编程 php函数 php分割函数

评论(0) 浏览(9307)

给验证码添加一个点击刷新的功能

2010-6-5 寒川 网页编程

总所周知EMlog验证码一旦加载了却无法再次只刷新验证码,这样很不爽,偶尔看不清楚却导致必须将整个页面刷新一次才能获取新的验证码,这样严重影响用户的心情,一个小小的验证码确实能看出EMlog在人性化的一方面还需要改进。实际上一两行代码就可以使博客系统更加人性化,我们何乐而不为呢?废话不多说,下面结合EMlog讲讲如何点击验证码实现自动刷新验证码的功能。

核心代码是在img标签中加入:onclick="this.src=this.src+'?'",他的作用就是当点击图片的时候加载验证码。为了使在鼠标点击验证码图片时有手型链接效果,可以在img标签中加入style=\"cursor : pointer;\",同时还可以加入alt和title属性。

就EMlog而言,需要修改的验证码有登陆验证、评论验证及碎语验证(手机版除外),所涉及到的文件有:
/lib/function.login.php
/index.php
/t/index.php
只要将上述三文件中验证码img标签中加入:style=\"cursor : pointer;\" alt=\"未显示?请点击刷新\" title=\"看不清楚?请点击刷新\" onclick=\"this.src=this.src+'?'\",即可实现点击验证码刷新功能。本博客修改后效果如下:
点击查看原图

标签: emlog 验证码 点击刷新 博客系统

评论(6) 浏览(12946)

php实现多个域名指向同一网站的301转向

2010-6-4 寒川 网页编程

前不久,一哥们儿在给我博客做SEO的时候建议我做个301转向,因为我的博客为两个域名(huikon.cn及www.huikon.cn)同时访问同一个站点,需要做个主站,其他域名通过301转向到主站,以免搜索引擎分担主站的权重。开始的时候准备通过修改.htaccess实现301转向,不过貌似本博客用的nginx服务器,也没有服务器配置权限,看来只能通过修改php文件实现301转向了。

开始直接在核心文件(如:config.php等配置文件)中添加301转向代码,但是因为两个域名指向的是同一个网站,不论访问那个域名,都出现“死循环”的现象(用IE浏览器一直加载但无法打开页面,用Google浏览器提示转向循环)。要解决死循环还是比较简单的,判断一下访问的主机就ok了,方法如下:

$host='huikon.cn';//主站域名
if($_SERVER['HTTP_HOST']!=$host)
{
header('HTTP/1.1 301 Moved Permanently');//发出301头部
header('Location:'.$host);
}

将上述代码放入核心文件中,虽然能够转向,但是问题又来了,一旦访问非huikon.cn的域名的其他页面结果全部都转到huikon.cn的主页页去了,能否一对一的301转向呢?答案当然是肯定的,php确实够强大,呵呵~~完整的多域名301转向至同一网站代码如下:

<?php
/*
o******************************o
* *
*文件:301.php *
*功能:用于301转向。 *
*版本:0.1 *
*作者:寒川 *
*URL:http://huikon.cn *
* *
o******************************o
*/

function get_file_parameter($auNo='')//获取特定网址后的文件及参数
{
$self_name=$_SERVER['PHP_SELF'];
$url_parameter=$_SERVER["QUERY_STRING"];
$sn="";
if(1==$auNo)
{
$pCut=explode("/",$self_name);
$pCount=substr_count($self_name,"/");
for($i=0; $i<$pCount;$i++)
{
$sn.=$pCut[$i]."/";
}
}
else
{
$sn=$self_name;
}
if(empty($url_parameter))
$url=$sn;
else
$url=$sn."?".$url_parameter;
return $url;
}


$host='huikon.cn';//主站域名
$url='http://'.$host.get_file_parameter();

if($_SERVER['HTTP_HOST']!=$host)
{
header('HTTP/1.1 301 Moved Permanently');//发出301头部
header('Location:'.$url);//转向
}
?>

将上述代码储存为301.php,在核心文件(或需要转向的文件)中通过require_once '301.php';语句将其包含进去,这就可以实现多域名转向至同一站点了。

标签: php编程 301转向 SEO优化

评论(4) 浏览(8642)

php读取txt文本文档数据库转入mysql数据库

2010-6-2 寒川 网页编程

 

满足固定格式的txt文档内容转为mysql数据库,与最近写的php实现SEO伪原创同义词替换函数 一文读取数据库时采用的方法一致。

<?php

$txt = file_get_contents('data.txt');

$txt = str_replace( "\r", "",$txt);

$txt = preg_split('/\n/', $txt, -1, PREG_SPLIT_NO_EMPTY);

foreach($txt as $k=>$v){

 if($k!=0){//判断是否为第一行

 $str = explode('|',$v);//“|”数据分隔符

   $sql = "INSERT INTO table

    (id,content1,content2) VALUES ('".$str[0]."','".$str[1]."','".$str[2]."')";

  }

  echo $sql.'<br>';//将sql语句用于mysql数据库操作即可。

 }

?>

数据data.txt格式如下:

 

1|内容1|内容2

2|内容3|内容4

……

标签: php txt mysql数据库

评论(1) 浏览(9776)

随机三位数相加减的php验证码程序

2010-6-1 寒川 网页编程

原先网上找了个只有加法的验证码程序修改为本博客的验证码,有一朋友他想要一个,其实好早前就给我说了,只是没找到他QQ号码,今天他上线发来消息,我发过去,由于此验证码需要修改博客程序才能正常使用,时隔太久,我都忘记需要修改哪儿了,自然他拿过去没能正常使用。晚饭后自己又写了一个验证码,实现三个数随机加减,感觉还挺好用的,现在贴出来分享。

<?php
/**
 * 图片验证码生成
 * copyright (c) 寒川 All Rights Reserved
 * version 1.0
 * URL: http://huikon.cn
 */
session_start();
function op()//随机输出运算符
{
 $operations=array('+','-');
 $i = mt_rand(0, count($operations) - 1);
 $op = $operations[$i]; 
 return $op;
}

function add($n1,$n2,$op)//计算
{
 switch($op)
 {
  case '+':
  $t=$n1+$n2;
  break;
  case '-':
  $t=$n1-$n2;
  break;
 }
 return $t;
}
$n =range(1,20);//建立数组
shuffle($n);//打乱

$op1=op();
$op2=op();
$expression = $n[1].$op1.$n[2].$op2.$n[3].'=?';//表达式
$total=add(add($n[1],$n[2],$op1),$n[3],$op2);//计算结果

$expression_len = strlen($expression);
$_SESSION['code'] =$total;

$img_width = 160;//图片宽度
$img_height = 30;//图片高度

$img = imageCreate($img_width, $img_height);
ImageColorAllocate($img, 255, 255, 255);//背景色
$white = ImageColorAllocate($img, mt_rand(30, 180), mt_rand(10, 100), mt_rand(40, 250));//文字颜色
$ix = mt_rand(0,10);//横坐标位置
$iy = mt_rand(0,10);//纵坐标位置
for ($i = 0; $i < $expression_len; $i++)
{
   imageString($img, 5, $ix, $iy, $expression[$i], $white);
   $ix += 14;  
}
// 输出图片
header("Content-type: " . image_type_to_mime_type(IMAGETYPE_PNG));
imagepng($img);
imagedestroy($img);
?>

标签: 验证码 php编程 加减法

评论(4) 浏览(10268)

php实现SEO伪原创同义词替换函数

2010-5-31 寒川 网页编程

近日和一朋友讨论PHP关于同义词替换的SEO伪原创问题,写了如下函数,并为emlog做成插件。
function strtr_words($str)
{
    $words=array();
    $content = file_get_contents('words.txt');//词库
    $content = str_replace( "\r", "",$content); //去掉换行符(以便兼容Linux主机)
    $content = preg_split('/\n/', $content, -1, PREG_SPLIT_NO_EMPTY);//\n分割字符
        foreach($content as $k=>$v)
        {
            if($k!=0)
            {
                $str_data = explode('→',$v);//关键词分割符
                $words+=array("$str_data[0]"=>"$str_data[1]");
            }
        }
    return strtr($str,$words);//返回结果
}

词库words.txt格式如下:

恳求→哀求
悲悼→哀伤
悲痛→哀思
悲伤→哀痛
顺序→挨次
受饿→挨饿
靠拢→挨近

注意,每一行一组同义词,中间用“→”分割。
 

标签: php seo

评论(7) 浏览(12866)

html读取xml并分页显示

2010-5-27 寒川 网页编程

下面这个html读取xml并分页显示的例子,是给别人做作业的时候写的(靠,这小子太懒了,居然找人做考试题)。例子如下:
data.xml文件如下:
<?xml version="1.0" encoding="gb2312"?>
<通讯录>
<学生 学号="S101">
<姓名>李正如</姓名>
<地址>合肥市</地址>
<QQ>666666</QQ>
<专业>计算机</专业>
</学生>
<学生 学号="S102">
<姓名>张广平</姓名>
<地址>滁州市</地址>
<QQ>888888</QQ>
<专业>计算机</专业>
</学生>
<学生 学号="S103">
<姓名>陈艳</姓名>
<地址>铜陵市</地址>
<QQ>111111</QQ>
<专业>网络</专业>
</学生>
<学生 学号="S104">
<姓名>李强</姓名>
<地址>郑州市</地址>
<QQ/>
<专业>网络</专业>
</学生>
</通讯录>

data.html文件如下:
<html>
<head>
<title>通讯录</title>
<xml src="data.xml" id="xmldso" async="false"></xml>
</head>
<body>
<table id="tb2" datasrc="#xmldso" width="100%" border="1" datapagesize="3" > 
<thead> 
<th>学号</th> 
<th>姓名</th> 
<th>地址</th> 
<th>QQ</th>
<th>专业</th>  
</thead> 
<tr align="left">
<td><span datafld="学号"></span></td> 
<td><span datafld="姓名"></span></td> 
<td><span datafld="地址"></span></td> 
<td><span datafld="QQ"></span></td> 
<td><span datafld="专业"></span></td> 
</tr></table>   
<INPUT TYPE="button" VALUE="第一页" ONCLICK='document.getElementById("tb2").firstPage();'> 
<INPUT TYPE="button" VALUE="前一页" ONCLICK='document.getElementById("tb2").previousPage();'> 
<INPUT TYPE="button" VALUE="后一页" ONCLICK='document.getElementById("tb2").nextPage();'> 
<INPUT TYPE="button" VALUE="最后一页" ONCLICK='document.getElementById("tb2").lastPage();'> 
</body> 
</html> 

标签: html xml 分页

评论(6) 浏览(10032)

Powered by emlog 蜀ICP备12030225号

川公网安备 51042102000001号

sitemap