重温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 &quot;walk&quot; the &lt;b&gt;dog&lt;/b&gt; 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 &lt;b&gt;bold&lt;/b&gt;
echo htmlentities($str, ENT_QUOTES);//A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt;
?>

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;amp; &amp;lt;Frau&amp;gt; &amp;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()函数。否则不会执行。

博客分类: 
Total votes: 792

添加新评论