PHP新手上路(十四) 其他杂项
13.1生成图像
PHP可以操作处理图像。如果你已经安装了GD库,你甚至可以利用PHP生成图像。<?Header("Content-type:image/gif");$string=implode($argv,"");$im=imagecreatefromgif("images/button1.gif");$orange=ImageColorAllocate($im,220,210,60);$px=(imagesx($im)-7.5*strlen($string))/2;ImageString($im,3,$px,9,$string,$orange);ImageGif($im);ImageDestroy($im);?>
(译者注:以上代码段缺少注释,请读者参考PHPManual的图像处理函数部分)
这段代码在其他页面中通过以下标记<imgsrc=http://www.okasp.com/techinfo/"button.php3?text">调用,然后以上的那段button.php3代码取得text值并在另外取得的图像文件中加上该值--在以上的代码中该图像文件是images/button1.gif--最后输出到浏览器。假如你想在表单域中使用图像按钮,但是又不希望在每次按钮上的文字改变后不得不重新生成新的图像,就可以利用这样简单的方法动态生成图像文件。
13.2Cookies
PHP支持基于HTTP的cookies。在需要时你可以像使用一般变量一样方便的使用cookie。Cookies是浏览器保存于客户端的一些信息片段,由此你可以知道是否一台特定PC上的任何人都访问过你的站点,浏览者者在你的站点上的踪迹等等。使用cookies的典型例子就是对浏览者偏好的甄别。Cookies由函数setcookie()设定。与输出HTTP标头的函数header()一样,setcookie()必须在任何实际内容杯输出到浏览器之前调用。以下是一个简单例子:
<?if(empty($VisitedBefore)) {//如果没有设定cookie,为cookie赋上当前时间值//函数中的最后一个参数声明了该cookie保存的时间//在这个例子中是1年//time()函数返回自1970年1月1日以来的以秒数计的时间SetCookie("VisitedBefore",time(),time()+(60*60*24*365));} else {//欢迎浏览者再次光临echo"Hellothere,welcomeback<BR>"; //读取cookie并判断if((time()-$VisitedBefore)>="(60*60*24*7)") echo"Whydidyoutakeaweektocomeback.Youshouldbeheremoreoften!?"; } ?>
13.3常用函数
我们简单来看看一些常用的函数。
数组
array-生成数组 count-数组元素个数 sort-数组排序,另有其他几种排序函数可供使用 list-列出数组元素 each-返回下一个key/value对 current-返回当前数组元素 next,prev-传回当前数组元素前后指针
日期和时间
checkdate-验证日期/时间格式 date-生成日期/时间格式 time-当前时间信息 strftime-格式化日期/时间
目录、文件系统
chdir-改变目录 dir-目录类别 opendir,readdir,closedir-开启、读取、关闭目录 fopen,fclose-开启、关闭文件 fgets,fgetss-逐行读取内容 file-将整个文件读入一个数组变量中
正则表达式
ereg-匹配正则表达式 eregi-大小写非敏感匹配正则表达式 ereg_replace-匹配正则表达式并替换 eregi_replace-大小写非敏感匹配正则表达式并替换 split-依规则切开字符串并以数组形势存储
字符串
AddSlashes-加上斜杠后使用字符串 echo-输出一个或多个字符串 join,implode-将数组元素合并为字符串 htmlentities,htmlspecialchars-将HTML特殊字符转换为HTML标记形式 split-依规则切开字符串并以数组形势存储
13.4扩展我们的范例主页
我们将使用以上提到的一些函数和思想为我们的范例主页添加更多的动态内容。我们可以在每个页面的顶部加上导航栏,同时使得当前页自动的不被链接显示;同时还可以添加一个用户验证表单以便上传音乐、图像等文件并自动更新页面。
导航栏
实际上就是在footer.inc文件中加上一段代码。假设你的web站点中所有后缀为.php3的文件都会出现在导航栏中,以下就是被存为include/navbar.inc的代码:
<?/*输出该导航栏,链接所有除当前页的站内.php3文件*/#读取目录$d=dir("./");echo"<PALIGN="CENTER">|n";while($entry=$d