qq524061227 发表于 2017-4-14 08:42:27

学习PHP中自己遇到的不熟悉的或掌握不够牢固的知识点(待续1)

  欢迎各位IT人事加入群:206981178,共同学习
  总结的不是很好,也许有很多简单的东西对于我来说都很不熟悉,请大家勿喷



1.php中的有关变量


   变量名必须以字母或下划线 "_" 开头。
  变量名只能包含字母数字字符以及下划线。

   变量名不能包含空格。如果变量名由多个单词组成,那么应该使用下划线进行分隔(比如 $my_string),或者以大写字母开头(比如 $myString)。
   主要例子:

   $4site   = 'not yet';    // 非法变更名;以数字开头
$_4site = 'not yet';    // 合法变量名;以下划线开头
$i站点is = 'mansikka';// 合法变量名;可以用中文

php的预定义变量   包括:$_SERVER, $_POST, $_GET, $_REQUEST,

   常用的例子:

   $a = "PHP彦彦";
echo "通过\$GLOBALS来取变量值:".$GLOBALS['a'];
//输出:通过$GLOBALS来取变量值:PHP彦彦
echo "<br/>";
echo "当前执行脚本的文件名:".$_SERVER['PHP_SELF'];
//输出:当前执行脚本的文件名:/study_php/2-3.php
echo "<br/>";
echo "当前执行脚本所在的根目录:".$_SERVER['DOCUMENT_ROOT'];
//输出:当前执行脚本所在的根目录:H:/wwwroot
echo "<br/>";
echo "当前执行脚本的的绝对路径:".$_SERVER['SCRIPT_FILENAME'];
//输出:当前执行脚本的的绝对路径:H:/wwwroot/study_php/2-3.php
变量类型的强制转换
PHP 中的类型强制转换和 C   中的非常像:在要转换的变量之前加上用括号括起来的目标类型。

  允许的强制转换有:

  (int),(integer) - 转换成整型

  (bool),(boolean) - 转换成布尔型

  (float),(double),(real) - 转换成浮点型

  (string) - 转换成字符串

  (array) - 转换成数组

  (object) - 转换成对象


变量类型的判断
PHP 包括几个函数可以判断变量的类型,例如:gettype(),is_array(),is_float(),is_int(),is_object() 和 is_string()。
<?php
$s = "this is a string";
$i = 9;
$arr = array(2,4,6);
is_string($s); //返回TRUE,表示$s是一个字符串变量
is_string($i); //返回FALSE,表示$i不是一个字符串变量
is_array($arr); //返回TRUE,表示$arr是一个数组
is_array($s); //返回FALSE,表示$s不是一个数组
    //gettype()获取变量类型 $str = "this is a string";
$int = 9;
$bool = FALSE;
echo "\$str的类型是:".gettype($str);
echo "<br/>";
echo "\$int的类型是:".gettype($int);
echo "<br/>";
echo "\$bool的类型是:".gettype($bool);
    //设置变量类型
    //bool settype ( mixed var, string type )将变量 var 的类型设置成 type。
    //type 的可能值为:
//“boolean” (或为“bool”,从 PHP 4.2.0 起)
//“integer” (或为“int”,从 PHP 4.2.0 起)
//“float” (只在 PHP 4.2.0 之后可以使用,对于旧版本中使用的“double”现已停用)
//“string”
//“array”
//“object”
//“null” (从 PHP 4.2.0 起)
   //如果成功则返回 TRUE,失败则返回 FALSE。
?>
版权所有地址:http://blog.csdn.net/yanfangphp
    变量的删除
    unset() 删除指定的变量,它是一个语句,没有返回值,试图获取 unset() 的返回值将导致解析错误。
    unset($var); //删除单个变量
    unset($arr['elem']); //删除单个数组元素
    unset($var1, $var2, $var3); //删除一个以上的变量


2.php中有关常量
   php中定义常量使用 define 函数,常量我们习惯使用大写字母

一个常量一旦被定义,就不能再改变或者取消定义。

不要在常量前面加上 $ 符号
   //define(ABC,"www.phpjc.cn"); //定义常量 ABC ,并赋值

//define(SIZE,100); //定义常量 SIZE
  预定义常量
   PHP 向它运行的任何脚本提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。

名称         说明

__LINE__   文件中的当前行号。

__FILE__   文件的完整路径和文件名。

__FUNCTION__ 函数名称(这是 PHP 4.3.0 新加的)

__CLASS__    类的名称(这是 PHP 4.3.0 新加的)

__METHOD__   类的方法名(这是 PHP 5.0.0 新加的)
  

  位逻辑运算符
   例子   名称   结果

$a and $bAnd(逻辑与)TRUE,如果 $a 与 $b 都为 TRUE。

$a or $b    Or(逻辑或)   TRUE,如果 $a 或 $b 任一为 TRUE。

$a xor $b   Xor(逻辑异或) TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是。

! $a   Not(逻辑非)   TRUE,如果 $a 不为 TRUE。

$a && $b   And(逻辑与)TRUE,如果 $a 与 $b 都为 TRUE。

$a || $b   Or(逻辑或)   TRUE,如果 $a 或 $b 任一为 TRUE。
  这样的写法也可以正确输出(我才知道):
   //输出一段文字

print <<<END

PHP教程网是以PHP资源分享为主的专业网站,

力争打造成教科书式的PHP教程网。

END;
  

  for循环中的应用方法:
  

  /* 应用1,每个条件都有 */

for ($i = 1; $i <= 10; $i++) {

print $i. "-";

}

/* 应用2,省略第2个表达式 */

print "<br>";

for ($i = 1; ; $i++) {

if ($i > 10) {

break;

}

print $i. "-";

}

print "<br>";

/* 应用3,省略3个表达式 */


$i = 1;

for (;;) {

if ($i > 10) {

break;

}

print $i. "-";

$i++;

}

print "<br>";

/* 应用4 */


for ($i = 1; $i <= 10; print $i. "-", $i++);

print "<br>";


/* 应用5 */

for ($i = 1; $i <= 10; $i++) :print $i;print "-";endfor;
  

  while循环中的应用方法:
  <?php

/* 应用1 */

$i = 1;

while ($i <= 10) {

print $i++ . "-";

}

print "<br>";

/* 应用2 */

$i = 1;

while ($i <= 10):

print $i . "-";

$i++;

endwhile;

print "<br>";


/* 应用3 */

$i = 1;

while ($i<20):

print $i . "-";

$i++;

if ($i>10) break;

endwhile;

//www.phpjc.cn

?>
  

  PHP中的continoe语句
  <?php

$i=0;

while ($i++<5) {

if ($i==2) { // 跳出,也就是不会输出i am 2

continue;

}

echo "i am $i <br>";

}

?>
  PHP 中的传值方式传递函数参数


函数参数传递的方式有两种:

1、传值方式。缺省情况下,函数参数通过传值的方式传递,因此即使在函数内部改变参数的值,它并不会改变函数外部参数的值。

2、传址方式。传址时只需在函数调用时在参数的前面加上“&”号即可。将函数外部的值的内存地址传递给内部的参数,在函数内部的所有操作都会改变函数外部参数的值。


所以希望函数修改外部参数的值,必须使用传址传址方式。
传值方式:

$i = 100;

function func($n)

{

$n = $n+100;

}

echo "调用函数func前:\$i=$i"; //$i 的值是100

echo "<br/>";


func($i); //传值方式传递函数参数,$i的值不会改变

echo "调用函数func后:\$i=$i.<br/>"; //&i的值仍然是 100
传址方式:

$i = 100;

function func(&$n) // 参数前加了 & 符号,表示传址传递参数

{

$n = $n+100;

}


echo "调用函数func前:\$i=$i"; //$i =100

echo "<br/>";


func($i);

echo "调用函数func后:\$i=$i"; // 因为是修改了内存地址,所以$i=200
  PHP中超全局变量:
  

$_SERVER :服务器设置变量;

$_ENV :环境变量;

$_GET :通过URL提供给脚本的变量;

$_POST :通过HTML POST方式提供给脚本的变量;

$_COOKIE :通过HTML cookies提供给脚本的变量;

$_FILE :通过HTML POST文件上传所上传的变量;

$_REQUEST :GET、POST、COOKIE方式提供的所有变量;

$_SESSION :目前在会话中注册的变量
  $GLOBAL定义后的变量将在整个文件范围内可见
  



3.PHP时间函数


  date()函数格式化时间和日期
  echo "<b>格式化当前时间</b><br/>";

echo date('Y-m-j');

echo "<br/>";


echo "今天是一年中的第".date('z')."天";

echo "<br/>";


echo date('M jS,Y l');

echo "<br/>";


echo "程序执行时间:".date('H:i:s');
  输出:
  2009-11-29

今天是一年中的第332天

Nov 29th,2009

Sunday
  

  mktime()函数:

mktime(hour,minute,second,month,day,year,is_dst)
  mktime() 函数返回一个日期的 Unix 时间戳。

参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。

参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。

hour可选。规定小时。

minute可选。规定分钟。

second可选。规定秒。

month可选。规定用数字表示的月。

day可选。规定天。

year可选。规定年。在某些系统上,合法值介于 1901 - 2038 之间。不过在 PHP 5 中已经不存在这个限制了。

is_dst

可选。如果时间在日光节约时间(DST)期间,则设置为1,否则设置为0,若未知,则设置为-1。

自 5.1.0 起,is_dst 参数被废弃。因此应该使用新的时区处理特性。
  

  例子:
  echo "时间戳".mktime(0,0,0,12,31,2007)."对应的日期是:";

echo "<br/>";


echo date("M-d-Y", mktime(0,0,0,12,31,2007));

echo "<br/>";


$day = 1;

echo "时间戳".mktime(0,0,0,7,$day+38,2008)."对应的日期是:<br/>";

echo date("Y-m-d", mktime(0,0,0,7,$day+38,2008));

  输出:

时间戳1199030400对应的日期是:

Dec-31-2007


时间戳1218124800对应的日期是:

2008-08-08

  

  getdate()函数:
  $time = mktime(20,0,0,11,29,2009);

echo "<b>日期:".date("Y-m-d H:i:s",$time)."</b>";

echo "<br/>";


echo "<pre>";

echo "该日期相关信息如下:";

echo "<br/>";


$date = getdate($time);

print_r($date);
  输出:
  

日期:2009-11-29 20:00:00
该日期相关信息如下:
Array
(
=> 0
=> 0
=> 20
=> 29
=> 0
=> 11
=> 2009
=> 332
=> Sunday
=> November
=> 1259496000
)


4.PHP中进制之间的转换
  $i = 22;

$bi = 1011001;

$oi = 721;

$hi = A2;


echo "$i 的二进制数是:".decbin($i);

echo "<br/>";

echo "$i 的八进制数是:".decoct($i);

echo "<br/>";

echo "$i 的十六进制数是:".dechex($i);

echo "<hr>";


echo "二进制数 $bi 的十进制数是:".bindec($bi);

echo "<br/>";

echo "八进制数 $oi 的十进制数是:".octdec($oi);

echo "<br/>";

echo "十六进制数 $hi 的十进制数是:".hexdec($hi);

echo "<hr>";


$hex_num = 'A515';

echo "使用函数base_convert(),转换十六进制数B515到二进制数:<br/>";

echo base_convert($hex_num,16,2);

?>


输出:

22 的二进制数是:10110

22 的八进制数是:26

22 的十六进制数是:16

二进制数 1011001 的十进制数是:89

八进制数 721 的十进制数是:465

十六进制数 A2 的十进制数是:162

使用函数base_convert(),转换十六进制数B515到二进制数:

1010010100010101
  


5.和项目文件有关的一些函数
  1.file_exists()函数:
  定义和用法

file_exists() 函数检查文件或目录是否存在。

如果指定的文件或目录存在则返回 true,否则返回 false。


语法

file_exists(path)


参数描述

path必需。规定要检查的路径。
  2.fopen()函数:
  定义和用法

fopen() 函数打开文件或者 URL。

如果打开失败,本函数返回 FALSE。


语法

fopen(filename,mode,include_path,context)


参数描述

filename必需。规定要打开的文件或 URL。

mode必需。规定要求到该文件/流的访问类型。可能的值见下表。

include_path可选。如果也需要在 include_path 中检索文件的话,可以将该参数设为 1 或 TRUE。

context可选。规定文件句柄的环境。Context 是可以修改流的行为的一套选项。

mode 参数的可能的值

mode说明

"r"只读方式打开,将文件指针指向文件头。

"r+"读写方式打开,将文件指针指向文件头。

"w"写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

"w+"读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

"a"写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

"a+"读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

"x"


创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。

"x+"


创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给底层的 open(2) 系统调用指定 O_EXCL|O_CREAT 标记是等价的。此选项被 PHP 4.3.2 以及以后的版本所支持,仅能用于本地文件。
  3.fread() 函数 打开文件:
  定义和用法

fread() 函数读取文件(可安全用于二进制文件)。


语法

fread(file,length)


参数描述

file必需。规定要读取打开文件。

length必需。规定要读取的最大字节数。

说明


fread() 从文件指针 file 读取最多 length 个字节。该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件,视乎先碰到哪种情况。


返回所读取的字符串,如果出错返回 false。
  4.fwrite()函数 写入文件
  定义和用法


fwrite() 函数写入文件(可安全用于二进制文件)。

语法


fwrite(file,string,length)


参数描述

file必需。规定要写入的打开文件。

string必需。规定要写入文件的字符串。

length可选。规定要写入的最大字节数。

说明


fwrite() 把 string 的内容写入文件指针 file 处。 如果指定了 length,当写入了 length 个字节或者写完了 string 以后,写入就会停止,视乎先碰到哪种情况。


fwrite() 返回写入的字符数,出现错误时则返回 false。


5.filesize() 函数 返回文件的大小
  定义和用法

filesize() 函数返回指定文件的大小。

若成功,则返回文件大小的字节数。若失败,则返回 false 并生成一条 E_WARNING 级的错误。

语法

filesize(filename)

参数描述

filename必需。规定要检查的文件。
  6.file_exists() 函数 文件或目录是否存在定义和用法


file_exists() 函数检查文件或目录是否存在。

如果指定的文件或目录存在则返回 true,否则返回 false。

语法

file_exists(path)

参数描述

path必需。规定要检查的路径。
  

  


6.对URL操作的函数
  1.URLEncode() 函数 对URL进行编码
  定义和用法

URLEncode 方法把 URL 编码规则应用到指定的字符串。
  2.urldecode() 函数 对于url解码

定义和用法

对URL进行解码。
  3.parse_url() 函数 解析 URL

定义和用法

parse_url — 解析 URL,返回其组成部分。


实例

<%

$url = "http://www.somesite.com:8000/php/code?id=100&cid=900";

$ret_arr = parse_url($url);


echo "要分析的地址:<br/>".$url;

echo "<hr>";


echo "<pre>";

echo "分析结果如下:<br/>";

print_r($ret_arr);

%>

7.php图像函数
  PHP自4.3版本开始,捆绑了自己的GD2库,用户可以自己下载并设置.如果要查看自己的php版本是否支持gd模块(支持JPEG,PNG,WBMP但不再支持GIF),如下方式是一种方法:


if(!function_exists('imagecreate')) {

die('本服务器不支持GD模块');

}


如果不支持的话,如何配置 ? 下载gd模块的dll文件,修改php.ini,重启服务器即可.


以下简称PHP作图为PS.

当您打算 PS的话,应该完成如下如下步骤,这是必经的.

1:创建基本PS对象(我假设为$image),填充背景(默认黑),以后的全部ps操作都是基于这个背景图像的.

2:在$image上作图.

3:输出这个图像.

4:销毁对象,清除使用内存.


首先,我们来认识几个常用的函数,这些函数在php手册里面都有详细介绍,此处大体引用下.

resourceimagecreate( int x_size, int y_size )

imagecreate()返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的空白图像。


此函数基本同imagetruecolor($width,$height).

---------------------------------------------------------

intimagecolorallocate( resource image, int red, int green, int blue )


imagecolorallocate()返 回一个标识符,代表了由给定的 RGB 成分组成的颜色。image 参数是 imagecreatetruecolor() 函数的返回值。red,green 和 blue 分别是所需要的颜色的红,绿,蓝成分。这些参数是 0 到 255 的整数或者十六进制的 0x00 到 0xFF。imagecolorallocate() 必须被调用以创建每一种用在 image 所代表的图像中的颜色。


---------------------------------------------------------

boolimagefill( resource image, int x, int y, int color )


imagefill()在 image 图像的坐标 x,y(图像左上角为 0, 0)处用 color 颜色执行区域填充(即与 x, y 点颜色相同且相邻的点都会被填充)。


---------------------------------------------------------

boolimageline( resource image, int x1, int y1, int x2, int y2, int color )



imageline()用 color 颜色在图像 image 中从坐标 x1,y1 到 x2,y2(图像左上角为 0, 0)画一条线段。

---------------------------------------------------------


boolimagestring( resource image, int font, int x, int y, string s, int col )



imagestring()用 col 颜色将字符串 s 画到 image 所代表的图像的 x,y 坐标处(这是字符串左上角坐标,整幅图像的左上角为 0,0)。如果 font 是 1,2,3,4 或 5,则使用内置字体。


---------------------------------------------------------

arrayimagettftext( resource image, float size, float angle, int x, int y, int color, string fontfile, string text )


本函数比较重要,参数较多,此处不再列出,它主要是写字到图像上,和上面的函数类似,但必前者强大.

---------------------------------------------------------

boolimagefilltoborder( resource image, int x, int y, int border, int color )


imagefilltoborder()从 x,y(图像左上角为 0, 0)点开始用 color 颜色执行区域填充,直到碰到颜色为 border 的边界为止。【注:边界内的所有颜色都会被填充。如果指定的边界色和该点颜色相同,则没有填充。如果图像中没有该边界色,则整幅图像都会被填充。】

------------------------------------------------


boolimagefilledellipse( resource image, int cx, int cy, int w, int h, int color )



imagefilledellipse()在 image 所代表的图像中以 cx,cy(图像左上角为 0, 0)为中心画一个椭圆。w 和 h 分别指定了椭圆的宽和高。椭圆用 color 颜色填充。如果成功则返回 TRUE,失败则返回 FALSE。
  

  例子:
  例一:输出蓝色背景和交叉白线的图形



&lt;?php

$width=35;

$height=35;

//创建对象

$image=imagecreate($width,$height);

//提取颜色

$color_white=imagecolorallocate($image,255,255,255);//白色

$color_blue=imagecolorallocate($image,0,0,108);//蓝色

imagefill($image,0,0,$color_blue);

//作图

//线宽

imagesetthickness($image,3);

imageline($image,0,0,$width,$height ,$color_white);

imageline($image,$width,0,0,$height ,$color_white);

//发送对象至头

header('content-type:image/png');

imagepng($image);

/*

//发送对象至文件

$filename=&quot;ex1.png&quot;;

imagepng($image,$filename);

*/

//销毁对象

imagedestroy($image);

?&gt;
  输出图像:
http://www.phpjc.cn/uploads/allimg/100222/215U55J1-0.png
  例二: 阴阳图


&lt;?php

$width=400;

$height=400;

$image=imagecreatetruecolor($width,$height);

//提取颜色

$color_black=imagecolorallocate($image,0,2,0);//

$color_white=imagecolorallocate($image,255,255,255);//白色

$color_blue=imagecolorallocate($image,0,0,108);//蓝色

$color_red=imagecolorallocate($image,151,0,4);//红色

$color_my=imagecolorallocate($image,192,192,255);//背景

$color_temp=imagecolorallocate($image,199,199,199);//背景

//作图

imagefill($image,0,0,$color_white);

//第一个是大圆

imagefilledarc ($image,$width/2,$height/2,$height,$height,0,360,$color_blue,IMG_ARC_PIE);

//两个小圆

imagefilledellipse ($image,$width/2,$height/4 ,$height/2,$height/2,$color_red);

imagefilledellipse ($image,$width/2,$height/4 * 3,$height/2,$height/2,$color_blue);

/*imagefilledellipse -- 画一椭圆并填充*/

imagefilledarc ($image,$width/2,$height/2,$height,$height,-90,90,$color_red,IMG_ARC_PIE);

imagefilledellipse ($image,$width/2,$height/4 * 3,$height/2,$height/2,$color_blue);

//发送对象至头

header('content-type:image/png');

imagepng($image);

/*

//发送对象至文件

$filename=&quot;ex1.png&quot;;

imagepng($image,$filename);

*/

//销毁对象

imagedestroy($image);

?&gt;
  例三:3D图像--cool


&lt;?php

$width=400;

$height=400;

$image = imagecreatetruecolor($width, $height);

$white = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);

$gray = imagecolorallocate($image, 0xC0, 0xC0, 0xC0);

$darkgray = imagecolorallocate($image, 0x90, 0x90, 0x90);

$navy = imagecolorallocate($image, 0x00, 0x00, 0x80);

$darknavy = imagecolorallocate($image, 0x00, 0x00, 0x50);

$red = imagecolorallocate($image, 0xFF, 0x00, 0x00);

$darkred = imagecolorallocate($image, 0x90, 0x00, 0x00);

imagefill($image,0,0,$white);

// make the 3D effect

for ($i = $height /2 +20; $i &gt; $height /2; $i--) {

imagefilledarc($image, $width/2, $i, $width/2, $height /2, 0, 45, $darknavy, IMG_ARC_PIE);

imagefilledarc($image, $width/2, $i, $width/2, $height /2, 45, 75 , $darkgray, IMG_ARC_PIE);

imagefilledarc($image, $width/2, $i, $width/2, $height /2, 75, 360 , $darkred, IMG_ARC_PIE);

}

imagefilledarc($image, $width/2, $height /2, $width/2, $height /2, 0, 45, $navy, IMG_ARC_PIE);

imagefilledarc($image, $width/2, $height /2, $width/2, $height /2, 45, 75 , $gray, IMG_ARC_PIE);

imagefilledarc($image, $width/2, $height /2, $width/2, $height /2, 75, 360 , $red, IMG_ARC_PIE);

// flush image

header('Content-type: image/png');

imagepng($image);

imagedestroy($image);

/*

//发送对象至文件

$filename=&quot;ex1.png&quot;;

imagepng($image,$filename);

*/

?&gt;
  例四:简单的验证码


PHP创建验证码非常容易,容易的要死,简单的思路是这样的:

随机种子生成,提取随机字符,相连打印到图形,输出.,为了防止色盲,可以随机提取颜色,也可以自定义颜色,下面看看:



&lt;?php

session_start();

$width=65;

$height=20;

$sourcestrings=&quot;0123456789aqwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM&quot;;

$image=imagecreate($width,$height);

$colorarrs=array(

imagecolorallocate($image,255,255,255),//white

imagecolorallocate($image,0 ,0 , 0)//black

);

unset($sessionval);

imagesetthickness($image,3);

//随机得到字符串个数

$strsize=rand(3,5);

imagefill($image,0,0,$colorarrs);

//一个个的写字符串到图片

for($i=0;$i&lt;$strsize;$i++){

$i_temp=rand(1,62);

$sessionval .=$sourcestrings[$i_temp];

$fontcolor=imagecolorallocate($image,rand(0,255),rand(0,255),rand(0,255));

$y_i = $height/2 + $font_size /3 ;

imagechar($image,5, 1+ $i * $width /$strsize,5,$sourcestrings[$i_temp],$fontcolor);

}

//写入session,以后验证用

unset($_SESSION['cjjer']);

$_SESSION['cjjer'] = $sessionval;

//添加杂点

for($i=0;$i&lt;$width /$height *2;$i++)

{ $i_x=rand(0,$width);

$i_y=rand(0,$height);

$pixelcolor=imagecolorallocate($image,rand(0,255),rand(0,255),rand(0,255));

imagesetpixel($image,$i_x,$i_y,$pixelcolor);

}

header('content-type:image/png');

imagepng($image);

imagedestroy($image);

?&gt;
  生成的样式演示:
http://www.phpjc.cn/uploads/allimg/100223/2209234004-0.png
http://www.phpjc.cn/uploads/allimg/100223/220923CQ-1.png
http://www.phpjc.cn/uploads/allimg/100223/22092332a-2.png
  例六:给图片打上水印,生成缩列图


传统的ASP页子打水印和生成缩列图都是比较繁琐的,一般使用到的是其他组件什么的,但是,PHP可以轻松的干这些事情,正如您预料,不到30行的程序搞定这一切,请看这个源程序:


&lt;?php

$source=&quot;my.jpg&quot;;

$zoom=0.5;

$str='我是帅哥,你是MM么?';

$image=imagecreatefromjpeg($source);

$width=imagesx($image);

$height=imagesy($image);

$color_red=imagecolorallocate($image,111,0,0);//红色

$font=dirname(__FILE__). &quot;//simsun.ttc&quot;;

$str=iconv('GB2312','UTF-8',$str);

$fontsize=30;

$angle=25;

$fromx=$width/5;

$fromy=$height/2;

imagettftext($image,$fontsize,$angle,$fromx,$fromy,$color_red,$font,$str);

$width_temp=imagesx($image) * $zoom;

$height_temp=imagesy($image) * $zoom;

$img=imagecreatetruecolor($width_temp,$height_temp);

imagecopyresized ($img,$image,0,0,0,0,$width_temp, $height_temp,$width,$height);

imagedestroy($image);

$file_zoomname=&quot;my_zoom_jpeg.jpg&quot;;

imagejpeg($img,$file_zoomname);

imagedestroy($img);

?&gt;

8.PHP对字符串的操作常用函数

1.strlen()判断字符串长度

2.strtolower()将字符串转换成小写

3.strtoupper()将字符串转换成大写

4.ltrim()去除字符串的左边空格

5.rtrim()去除字符串的右边空格

6.trim()去除字符串的左右边空格
  7.strrev()让字符串逆顺序输出
  8.explode() 函数把字符串分割为数组
  9.implode() 函数把数组元素组合为一个字符串
  10.strpos() 函数返回字符串在另一个字符串中第一次出现的位置,如果没有找到该字符串,则返回 false
  11.str_replace() 函数使用一个字符串替换字符串中的另一些字符
  12.strcmp()字符串的大小比较

s1=s2,strcmp(s1,s2) == 0;

s1>s2, strcmp(s1,s2) == 1;

s1<s2, strcmp(s1,s2) == -1;
  13.similar_text($str1,$str2,$percent);计算两个字符串的相似度,$percent字符串的相似度值
  14.base64_encode()对字符串进行编码
  15.base64_decode()对编码的字符串进行解码
  16.urldecode()对字符串进行URL编码
  17.字符与ASCII之间的转换()

   例子:$str="A";

$asc=65;

echo "字符A的ASCII为".ord($str);

echo "<br>";

echo "ASCII码65对应的字符为".chr($asc);
  18.对字符串进行异或方式加密
   $string="mingrisoft";

$key="1234567890";

$result1=$string^$key;

$result2=$result1^$key;

echo "加密结果:".$result1;

echo "<br>";

echo "解密结果:".$result2;

  输出结果:
   加密结果:\[]SG_DW_D

解密结果:mingrisoft
  19.preg_match()匹配字符串
页: [1]
查看完整版本: 学习PHP中自己遇到的不熟悉的或掌握不够牢固的知识点(待续1)