<?php
得到PHP中最后一个字符
$str = " JhlIsHero ";
$var = trim($str);
$len = strlen($var)-1;
echo $var{$len};
?>
得到PHP一个字符串的最后一个字符
是不是PHP也和C一样,用一组连续地址来存储字符串呢......
PHP 尽管提供了大量有用的函数,但是在特殊情况下还可能需要进行扩展编程,比如大量的 PECL(PHP Extension Community Library)就是以扩展的形式提供的(动态链接库dll文件),它们比 PEAR 的运行效率要高很多。
PHP 扩展是用 C 或 C++ 编写的,需要编译成动态连接库 dll 文件后在 PHP 环境下注册后才能使用。
编写 PHP 扩展的软件要求:
VC++6.0 或 VC++.NET 环境。
PHP 的源代码,需要编译。
如果不愿意编译 PHP 的源代码,可以再下载 PHP 的已经编译成功的二进制代码(就是我们部署 PHP 运行环境的那些文件包)。注意分别下载的源文件包和已编译包,它们的版本必须一致。
过程:
1,安装 VC++6.0,并选择把其可执行文件路径加入环境变量中,使在命令行环境任意路径下可以运行编译器。
2,安装 PHP 运行环境,并与 IIS 正确集成在一起。假设使用的 PHP 版本为 5.2.5,下载 php-5.2.5-Win32.zip 二进制包和 php-5.2.5.tar.gz 源代码包。安装环境为 C:php-5.2.5-Win32。分别把源代码包和二进制包解压到该文件夹下。从 php.ini-recommended 拷贝生成一个 php.ini 文件。
3,建立 C:php-5.2.5-Win32Release_TS 文件夹,拷贝 C:php-5.2.5-Win32devphp5ts.lib 文件到这里。
4,进入 C:php-5.2.5-Win32ext 文件夹,运行命令:
C:php-5.2.5-Win32ext>..php.exe ext_skel_win32.php --extname=myphpext
Creating directory myphpext
Creating basic files: config.m4 config.w32 .cvsignore myphpext.c php_myphpext.h
CREDITS EXPERIMENTAL tests/001.phpt myphpext.php [done].
To use your new extension, you will have to execute the following steps:
1. $ cd ..
2. $ vi ext/myphpext/config.m4
3. $ ./buildconf
4. $ ./configure --[with|enable]-myphpext
5. $ make
6. $ ./php -f ext/myphpext/myphpext.php
7. $ vi ext/myphpext/myphpext.c
8. $ make
Repeat steps 3-6 until you are satisfied with ext/myphpext/config.m4 and
step 6 confirms that your module is compiled into PHP. Then, start writing
code and repeat the last two steps as often as necessary.
1、int filesize(string filename),获取文件的大小。对于2~4GB之间的文件,可以使用sprintf("%u",filesize($file))来处理
2、bool unlink(string filename) ,删除一个文件
3、bool rmdir(string dirname) ,删除一个目录
4、bool mkdir(string pathname [,int mode]) ,新建一个由lpathname指定的目录,mode是指操作权限,默认为0777,表示最大可能的访问权限
5、string basename(string path [,string suffix]) ,path参数给出一个文件的全路径字符串,函数返回基本的文件名。如文件名以suffix结束,则去掉这部分
6、string dirname(string path) ,返回路径中的目录部分。
7、array pathinfo(string path) ,返回文件路径的信息,包含以下的数组单元dirname,basename,extension.
8、string realpath(string path) ,返回规范化的绝对路径名
9、bool copy( string source ,string dest) ,将文件从source复制到dest
例:copy("hello.txt","temp.php");
10、float disk_free_space(string directory ) ,返回目录中的可用空间
例:$df = disk_free_space("F:/");
echo $df.''<br>'';
要用到,在网站上找了一个,然后自己整理成一个类..
<?php
/*
*PHP获取和设置XML节点,用于修改和读取站点配置文件
*2008-4-3
*LIQUAN
*eg.get config
*$c = new Configuration(''config.xml'');
*echo( $c->TemplateDirectory." " );
*
* set config
* $c = new Configuration(''config.xml'');
* $c->TemplateDirectory=''test'';
* $c->save();
*/
class Configuration
{
private $configFile;
private $items=array();
//构造函数
function __construct($configFile)
{
$this->configFile=$configFile;
$this->parse();
}
//获取属性
function __get($id)
{
return $this->items[$id];
}
//设置属性
function __set($key,$value)
{
$this->$items[$key]=$value;
}
//解析XML文件保存到数组
function parse()
{
$doc=new DOMDocument();
$doc->load($this->configFile);
$cn=$doc->getElementsByTagName(''config'');
$nodes=$cn->item(0)->getElementsByTagName(''*'');
foreach($nodes as $node)
{
$this->items[$node->nodeName]=$node->nodeValue;
}
}
//保存XML文件
function save()
{
$doc=new DOMDocument();
$doc->formatOutput=true;
$r=$doc->createElement(''config'');
$doc->appendChild($r);
foreach($this->items as $k=>$v)
{
$keyName=$doc->createElement($k);
$keyName->appendChild($doc->createTextNode($v));
$r->appendChild($keyName);
}
copy($this->configFile,$this->configFile.".bak");
$doc->save($this->configFile);
}
}
?>
PHP 语言从诞生起,就具有了很好的面向过程编程的特性。只是在其进化过程中才逐渐加强了面向对象的特性,直到 PHP5.0,也才接近完善。一般来说,PHP 的初学者和从 ASP 转向 PHP 开发的程序员比较偏向于面向过程编程,因为教科书和大量的参考书就是这样教的。
但是随着 PHP 语言的发展和编程技术的进步,即使是 PHP 开发人员,也应当向面向对象编程进化!因为随着 PHP 版本的升级,PHP 也在寻求向企业开发市场发展,将来的编程会越来越复杂。再者,为了解决目前大量的重复开发和代码质量低下问题,面向对象是个很好的解决方案。比如目前流行的 PEAR、Smarty、PHPlib 等 PHP 轻型函数库,都是采用 OOP 的方法实现。还有 Zend Framework 等面向对象的应用级编程框架,都是面向对象编程的典范,在该框架下编程,完全采用面向对象编程的风格。
所以,无论是考虑 PHP 的本身及其发展,还是考虑到程序员编程思维的培养,及其职业生涯的发展,面向对象的编程都是一个大方向。特别是对目前 PHP 的编程现状,我特别推荐大家站在面向对象一边,面向对象编程才是发展出路所在。
张庆(网眼)
网眼视界:http://blog.why100000.com
2008-3-28