重温PHP手册
一、 处理文件及文件夹函数:
1.getcwd 获取当前目录
2.chdir 改变目录
3.chmod 改变文件模式
chmod('/var/www/tmp', 0755);
第二个参数最好是八进制数。十进制或许不对。
4.用glob代替opendir()
<?php
foreach (glob("*.txt") as $filename) {
echo "$filename size " . filesize($filename) . " type " .filetype($filename). "\n";
}
?>
5.scandir()
array scandir ( string $directory [, int $sorting_order [, resource $context ]] )
返回数组,记录指定目录下的所有文件和目录。
6.chroot ()
chroot($directory)
将当前进程的根目录改变为 $directory .不过尚未在windows下实现
7.dir()
这是个仿冒面向对象的机制来读取一个目录。给定的 directory 被打开。
两个属性:
handle 属性可以用在其它目录函数例如 readdir(),rewinddir() 和 closedir() 中。
path 属性被设为被打开的目录路径。
三个方法:read,rewind 和 close。
<?php
$d = dir("/etc/php5");
echo "Handle: " . $d->handle . "\n";
echo "Path: " . $d->path . "\n";
while (false !== ($entry = $d->read())) {
echo $entry."\n";
}
$d->close();
?>
常用的有:
chdir — 改变目录
chroot — 改变根目录
dir — directory 类
closedir — 关闭目录句柄
getcwd — 取得当前工作目录
opendir — 打开目录句柄
readdir — 从目录句柄中读取条目
rewinddir — 倒回目录句柄
scandir — 列出指定路径中的文件和目录
二 、字符串处理函数:
1.chr 与 ord 是互补的。
chr()返回指定ACSII数值的字符。
ord()返回指定字符的ASCII数值。
2.chunk_split()
将字符分割成小块。
3.count_chars()
mixed count_chars ( string $string [, int $mode ] )
统计 string 中每个字节值(0..255)出现的次数,使用多种模式返回结果。可选参数 mode 默认值为 0。根据不同的 mode ,count_chars() 返回下列不同的结果:
0 - 以所有的每个字节值作为键名,出现次数作为值的数组。
1 - 与 0 相同,但只列出出现次数大于零的字节值。
2 - 与 0 相同,但只列出出现次数等于零的字节值。
3 - 返回由所有使用了的字节值组成的字符串。
4 - 返回由所有未使用的字节值组成的字符串。
4.addslashes 使用反斜线引用字符串
5.HTML编码相关函数:
转换为HTML编码:
htmlentities() - Convert all applicable characters to HTML entities
htmlspecialchars() - Convert special characters to HTML entities
HTML编码字符串转为正常字符串
htmlspecialchars_decode() - Convert special HTML entities back to characters .PHP5>=5.1.0
html_entity_decode() - Convert all HTML entities to their applicable characters
<?php
$orig = "I'll \"walk\" the <b>dog</b> now";
$a = htmlentities($orig);//I'll "walk" the <b>dog</b> now
$b = html_entity_decode($a);//I'll "walk" the <b>dog</b> now
$str = "A 'quote' is <b>bold</b>";
echo htmlentities($str);//A 'quote' is <b>bold</b>
echo htmlentities($str, ENT_QUOTES);//A 'quote' is <b>bold</b>
?>
get_html_translation_table() - Returns the translation table used by htmlspecialchars and htmlentities
<?php
$trans = get_html_translation_table(HTML_ENTITIES);
$str = "Hallo & <Frau> & Krmer";
$encoded = strtr($str, $trans);
echo $encoded;//Hallo &amp; &lt;Frau&gt; &amp; Krmer
?>
nl2br() - Inserts HTML line breaks before all newlines in a string
<?php
echo nl2br("foo isn't\n bar");
?>
Output:
foo isn't<br />
bar
urlencode() - 编码 URL 字符串
urldecode() - 解码已编码的 URL 字符串
strip_tags($str, $allow_tags) - 返回去除html标签,空格。
<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";
// Allow <p> and <a>
echo strip_tags($text, '<p><a>');// 允许包含p和a标签
?>
Output:
Test paragraph. Other text
<p>Test paragraph.</p> <a href="#fragment">Other text</a>
字符大小写:
strtoupper() - Make a string uppercase
strtolower() - Make a string lowercase
ucfirst() - Make a string's first character uppercase
lcfirst() - Make a string's first character lowercase
ucwords — 大写每个单词的首字母。
mb_convert_case() - Perform case folding on a string
sscanf() 分析指定格式的字符串
// getting the serial number
list($serial) = sscanf("SN/2350001", "SN/%d");
// and the date of manufacturing
$mandate = "January 01 2000";
list($month, $day, $year) = sscanf($mandate, "%s %d %d");
echo "Item $serial was manufactured on: $year-" . substr($month, 0, 3) . "-$day\n";
//Output:Item 2350001 was manufactured on: 2000-Jan-1
str_replace()
$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U");
$onlyconsonants = str_replace($vowels, "", "Hello World of PHP");
str_repeat()
echo str_repeat("-=", 10);
str_split();
array str_split ( string $string [, int $split_length = 1 ] )
Converts a string to an array.
strtok ()
substr($string,$start,$length)
string substr ( string $string , int $start [, int $length ] )
str_word_count()
Return information about words used in a string
Specify the return value of this function. The current supported values are:
0 - returns the number of words found
1 - returns an array containing all the words found inside the string
2 - returns an associative array, where the key is the numeric position of the word inside the string and the value is the actual word itself
(BTW:可作为返回一段话中每个单词用。)
三、数组
1.array_rand()从数组中随机取出一个或多个单元。
mixed array_rand ( array $input [, int $num_req ] )
四 、类和对象
1.类里面的常量使用关键字:const 定义。如:const constant='i am a constant value.';
PHP5.3之后可以使用变量来动态调用常量:
<?php
class MyClass
{
const constant = 'constant value';
function showConstant() {
echo self::constant . "\n";
}
}
echo MyClass::constant . "\n";
$classname = "MyClass";
echo $classname::constant . "\n"; // PHP 5.3.0之后
$class = new MyClass();
$class->showConstant();
echo $class::constant."\n"; // PHP 5.3.0之后
?>
2.一直只记得构造函数:__construct(),但是总会忘记析构函数__destruct()
3.public ,protected, private 访问控制关键字。
由 public 所定义的类成员可以在任何地方被访问;
由 protected 所定义的类成员则可以被其所在类的子类和父类访问(当然,该成员所在的类也可以访问);
而由 private 定义的类成员则只能被其所在类访问。
4.静态方法Static关键字。
static 不能与public,private,protected混淆了。后者是控制访问权限的关键字。
class test{
public static $static = 'static';
public function test()
{
echo 'this is test.';
}
}
5.抽象类 abstract
PHP5支持抽象类和抽象方法。抽象类不能直接被实例化,你必须先继承该抽象类,然后再实例化子类。抽象类中 至少要包含一个抽象方法。如果类方法被声明为抽象的,那么其中
就不能包括具体的功能实现。
继承一个抽象类的时候,子类必须实现抽象类中的所有抽象方法;另外,这些方法的可见性 必须和抽象类中一样(或者更为宽松)。如果抽象类中某个抽象方法被声明为
protected,那么子类中实现的方法就应该声明为protected或者public,而不 能定义为private。
例如:
abstract class AbstractClass
{
// 强制要求子类定义这些方法
abstract protected function getValue();
abstract protected function prefixValue($prefix);
// 普通方法(非抽象方法)
public function printOut() {
print $this->getValue() . "\n";
}
}
class ConcreteClass1 extends AbstractClass
{
protected function getValue() {
return "ConcreteClass1";
}
public function prefixValue($prefix) {
return "{$prefix}ConcreteClass1";
}
}
Output:
ConcreteClass1
FOO_ConcreteClass1
6.debug_backtrace() PHP内置的debug跟踪函数。
7.重载overloading
属性重载 __set() __get()
PHP 5.1.0 增加__isset() __unset()
方法重载 __call()
PHP 5.3.0 增加__callStatic()
8.魔术方法
__sleep()
__wakeup()
__toString()
__invoke()本特性只在PHP 5.3.0 及以上版本有效。
__set_state()PHP 5.1.0
此外,
1.数据类型有资源 resources.
A resource is a special variable, holding a reference to an external resource. Resources are created and used by special functions. See the appendix for a
listing of all these functions and the corresponding resource types.
also can see:
get_resource_type()
string get_resource_type ( resource $handle )
This function gets the type of the given resource.
(PHP 4 >= 4.0.2, PHP 5)
2. __DIR__ 从5.3开始被加进来了。
The directory of the file. If used inside an include, the directory of the included file is returned. This is equivalent to dirname(__FILE__). This directory
name does not have a trailing slash unless it is the root directory. (Added in PHP 5.3.0.)
3.__NAMESPACE__ 从5.3被加进来
The name of the current namespace (case-sensitive). This constant is defined in compile-time (Added in PHP 5.3.0).
4.__autoload() in PHP5.0
Many developers writing object-oriented applications create one PHP source file per-class definition. One of the biggest annoyances is having to write a long
list of needed includes at the beginning of each script (one for each class).
In PHP 5, this is no longer necessary. You may define an __autoload function which is automatically called in case you are trying to use a class/interface
which hasn't been defined yet. By calling this function the scripting engine is given a last chance to load the class before PHP fails with an error.
__autoload()函数不会被执行的情况:
如果程序内使用了class,function,并且该类或函数找不到,则会自动使用__autoload()函数。否则不会执行。
添加新评论