substr()

2008-12-18 12:51:44

写了个获取最新评论的函数,用substr截取,后面总会莫名其妙地多个乱码,原来 ,substr() 函数只能正确截取单字节字符串,所以针对双字节或多字节编码的字符就得自己动手了~···

function sysSubStr($String,$Length,$Append=false){
	if (strlen($String) <= $Length ){
		return $String;
	}
	else{
		$I = 0;
		while ($I < $Length){
			$StringTMP = substr($String,$I,1);
			if ( ord($StringTMP) >=224 ){
				$StringTMP = substr($String,$I,3);
				$I = $I + 3;
			}
			elseif( ord($StringTMP) >=192 ){
				$StringTMP = substr($String,$I,2);
				$I = $I + 2;
			}else{
				$I = $I + 1;
			}
			$StringLast[] = $StringTMP;
		}
		$StringLast = implode("",$StringLast);
		if($Append){
			$StringLast .= "...";
		}
		return $StringLast;
	}
}

更多的在这里:http://www.codebit.cn/pub/html/php_mysql/tip/data/substr/

再玩PHP

2008-11-13 13:45:19

上一次玩PHP是在遥远的半年前的毕业设计,然后就是一个畸形儿,然后就导致我毕业答辩做了两次~···往事不堪回首~···这次还是给别人做了个小站,做完后都心有余悸~···半年之后忘光光,基本是边翻手册边做的。记下来免得以后到处翻~···(PHP高手请绕道~)

PHP-MySQL

首先建立一个到MySQL服务器的连接:

$link = mysql_connect(’数据库所在位置’,’数据库账号’,’数据库密码’);

当没有提供可选参数时使用以下默认值:server=’localhost:3306′,username=服务器进程所有者的用户名,password=空密码。

连接数据库:

上面只是连接到MySQL,而没有连接到具体的数据库,所以需要连接到数据库才能进行相关操作。

mysql_select_db("数据库名","mysql连接名");

如果数据库连接成功就可以执行sql命令进行相关的数据库操作了:

$result = mysql_query("select * from user",$link);

如果没有指定$link,则使用上一个打开的连接。如果没有打开的连接,会尝试无参数调用mysql_connect() 函数来建立一个连接并使用之。查询结果会被缓存。

数据查询结果(针对有结果的sql操作):

while ($row = mysql_fetch_row($result)) {
  echo $row['field'];
}

也可以这样:

while ($row = mysql_fetch_row($result)){
  for($i=0;$i<count($row);$i++){
    echo $row[$i];
  }
}

操作完成后最好释放无用的资源以提高系统性能:

mysql_free_result($result);
mysql_close($link);

文件上传(POST)

首先表单需设置属性:enctype=”multipart/form-data”,否则文件无法上传。

$_FILES数组:

  • $_FILES['userfile']['name'] 客户端机器文件的原名称。
  • $_FILES['userfile']['type'] 文件的 MIME 类型,如果浏览器提供此信息的话。一个例子是“image/gif”。不过此 MIME 类型在 PHP 端并不检查,因此不要想当然认为有这个值。
  • $_FILES['userfile']['size'] 已上传文件的大小,单位为字节。
  • $_FILES['userfile']['tmp_name'] 文件被上传后在服务端储存的临时文件名。
  • $_FILES['userfile']['error'] 和该文件上传相关的错误代码。此项目是在 PHP 4.2.0 版本中增加的。

文件被上传后,默认地会被储存到服务端的默认临时目录中,除非php.ini中的upload_tmp_dir设置为其它的路径。服务端的默认临时目录可以通过更改PHP运行环境的环境变量TMPDIR来重新设置,但是在PHP脚本内部通过运行putenv()函数来设置是不起作用的。该环境变量也可以用来确认其它的操作也是在上传的文件上进行的。

使文件上传生效

is_uploaded_file 判断文件是否是通过HTTP POST上传的。

move_uploaded_file(string filename, string destination) 本函数检查并确保由filename指定的文件是合法的上传文件(即通过PHP的HTTP POST上传机制所上传的)。如果文件合法,则将其移动为由destination指定的文件。

md5加密

PHP中有现成的函数——string md5( string str [, bool raw_output]),raw_output默认为false,函数返回32位字符串,如果将其设置为true则返回16位字符。

session

首先使用session_start()启用session,然后就可注册变量了,$_session['login'] = true,然后就可以跨页面访问该session变量了~···

中文编码问题

所有页面和数据库均使用的utf8编码,但是中文数据在phpmyadmin总总显示乱码,能正确读取,这个问题从一开始就搞到我崩溃,最后修改phpMyAdmin\libraries\select_lang.lib.php数组$GLOBALS['mysql_charset_map']中’utf-8′=> ‘latin1′才算搞定~···(感谢TZ~)

关于JSON部分看这里

over~···

PHP and JSON

2008-06-24 17:02:32

PHP5中新增加两个函数json_encode和json_decode以加强对JSON的支持~第一个函数将把任意类型的数据对象转换为一组序列化数据,以供 JavaScript 处理。第二个函数将把序列化数据解码,并将其转换为基本 PHP 对象或联合数组。

json_encode主要用于将数组转换成JSON格式返回给客户端的JavaScript,转换时我们需注意以下几点:

  1. PHP自动分配的数字索引的数组转换后依然返回的是原数组,无法转换成JSON格式的数据,自定义的数字索引数组array(1=>”omiga”,2=>”http://omiga.org”)则可正常转换;
  2. 转换后的JSON数据的name与数组的索引对应。数组array(”name”=>”omiga”,”homepage”=>”http://omiga.org”)转换后的JSON数据是:{”name”:”omiga”,”homepage”:”http://omiga.org”};
  3. 非UTF-8编码下的中文无法正常转换,必须先将数组转换成UTF-8再用json_encode进行转换(很麻烦~等会还得转回去)。

json_decode默认返回的是stdClass 的对象,可以使用json_decode(jsonData,true)创建数组。



相关阅读