0%

Filter函数可以过滤外部表单,内部变量,验证表单数据或变量是否符合指定要求,或按指定要求过滤后返回。 主要函数: filter_input,filter_input_array,过滤外部表单得到的数据 filter_var,filter_var_array,过滤变量 filter_has_var,验证是要过滤的数据是否存在 下面是一个验证e-mail和ip地址的例子:

<?php
if (filter_input (INPUT_GET, "email", FILTER_VALIDATE_EMAIL )) {
    echo "邮箱正确"."<br/>";
} else {
    echo "邮箱错误"."<br/>";
}

if(filter_input(INPUT_POST, "ip",FILTER_VALIDATE_IP))
{
    echo "IP正确"."<br/>";
}else{
    echo "IP错误"."<br/>";
}
?>
<br />
<br />
<br />
<form action="index.php" method="post">
    Email:<input type="text" name="email" /><br /> IP地址<input type="text"
        name="ip" /><br /> <input type="submit" value="提交" />
</form>

一个父类,一个子类(People.php):

<?php
class People {
    private $name;
    private $age;
    function __construct() {
        // 构造方法
        $this->age = 20;
        $this->name = "noname";
    }
    function __destruct() { // 析构方法,因为PHP的特性,页面载入完就会销毁所有对象
        echo "销毁对象" . $this->name;
    }
    /**
     * setter和getter
     *
     * @return the $name
     */
    public function getName() {
        return $this->name;
    }
    
    /**
     *
     * @return the $age
     */
    public function getAge() {
        return $this->age;
    }
    
    /**
     *
     * @param field_type $name        	
     */
    public function setName($name) {
        $this->name = $name;
    }
    
    /**
     *
     * @param field_type $age        	
     */
    public function setAge($age) {
        $this->age = $age;
    }
    public function say() {
        echo $this->name. $this->age;
    }

}
class Student extends People {
    //继承People
    public $id;
    public function study() {
        echo "我在学习";
    }
    
    public function say() {
        echo parent::getName().parent::getAge().$this->id;
        //访问父类方法读取
        
    }

}
?>

使用:

<?php
require_once 'People.php';
$stu=new Student();
$stu->setAge(23);
$stu->setName("张三");
$stu->id=232432;
$stu->say();
$stu->study();
?>

默认情况下,对于一个对象,直接用等于号,复制的是引用,而不是值

<?php
class MyClass{
    public $a;
}
$a=new MyClass();
$a->a=1;
$b=clone $a;
//通过clone关键字复制对象
$b->a=10;
echo $a->a;
//输出的是1
?>

如果该类的属性包括对象,需要覆盖_clone()方法,在方法中手动复制对象

类的定义People.php:

<?php
class People {
    private $name;
    private $age;
    //私有变量
    static $sex="girl";
    //定义静态变量 
    function __construct() {
        //构造方法
        $this->age = 20;
        $this->name = "noname";
    }
    

    /**
     * @return the $sex
     */
    public static function getSex() {
        return People::$sex;
    }

    /**
     * @param string $sex
     */
    public static function setSex($sex) {
        self::$sex=$sex;
        //可以用self
    }

    function __destruct()
    {//析构方法,因为PHP的特性,页面载入完就会销毁所有对象
        echo "销毁对象".$this->name;
    }
    /**setter和getter
     *
     * @return the $name
     */
    public function getName() {
        return $this->name;
    }
    
    /**
     *
     * @return the $age
     */
    public function getAge() {
        return $this->age;
    }
    
    /**
     *
     * @param field_type $name        	
     */
    public function setName($name) {
        $this->name = $name;
    }
    
    /**
     *
     * @param field_type $age        	
     */
    public function setAge($age) {
        $this->age = $age;
    }
    public function say() {
        echo "$this->name. $this->age";
    }

}
?>

使用:

<?php
include_once 'People.php';
$p1=new People();
$p1->setAge(6);
$p1->setName("zhang");
$p1->say();
echo People::$sex;
//读静态变量 
?>

常量的定义与使用:

<?php
class MyClass{
    const A="asdfwes";
}
echo MyClass::A;
?>

截取子串:substr 格式化输出:printf 换行符\n转成HTML的br:nl2br 指定位置强制换行:wordwrap 转换为小写:strtolower 转换为大写:strtoupper 字符串中所有单词首字符大写:ucwords 计算字符串长度:strlen 计算子串出现的次数:substr_count,str_word_count 查找子串索引:strpos 字符串复制:str_repeat 字符串翻转:strrev 字符串替换:substr_replace 切割字符串:explode,str_split 数组元素连接成字符串:implode 字符串比较:==(比Java简单),strcmp

PHP中的数组与其他语言区别还是蛮大的。类似于Java中的List和HashMap结合,没有指定的大小,可以随意扩充,删除,可以用数字索引,或者键来索引。

<?php
$arr1=array("a","b","c");
//数字作为索引
print_r($arr1);
$arr=array("a"=>"aaa","c"=>"ccc");
//键作为索引
$arr["b"]="bbb";
//添加数组元素
$arr["a"]="abc";
//编辑元素
unset($arr["c"]);
//删除元素
print_r($arr);
echo "<br/>";
while(list($key,$value)=each($arr))
{
    //list()函数,用数组中的元素为一组变量赋值
    //each()生成一个由数组当前内部指针所指向的元素的键名和键值组成的数组,并把内部指针向前移动
    echo "$key--$value<br/>";
}

?>

判断数组中是否包含某元素:in_array 判断组织中是否包含某键:array_key_exists 元素个数统计:count或sizeof 数组合并:array_merge,如果键名相同,会被后者覆盖。 数组拆分:array_chunk 快速创建整数相同步进的数组:range 翻转数组:array_reverse 数组元素求和:array_sum 对调数组键名和值:array_flip 具体用法请查手册

include在包含失败时,会抛出警告信息,并继续执行,而require在抛出后,不再往下执行。include_once和require_once只包含一次,如果该文件已经被包含,不会再包含。

类似于C中的指针,但赋值的时候不需要加星号

<?php

function change($a)
{
    $a=10;
}
$a=5;
change(&$a);//引用传递
//change($a);值传递
echo $a;
//10
?>

与Java不同,PHP函数定义不需要返回值类型,也不能定义同名函数,即使参数不同。

<?php
function sum($a,$b)
{
    return $a+$b;
}
echo sum(5,6);

?>

指定参数默认值,默认参数必须放在最后:

function sum($a,$b=5)
{
    //b默认为5
    return $a+$b;
}
echo sum(5);
//10

PHP的Break,在多层循环中,可以中断指定层。

<?php
for($a = 0; $a < 10; $a ++) {
    for($b = 0; $b < 10; $b ++) {
        echo $a . $b."<br/>";
        break;
    }
}
echo "<br/>";
for($a = 0; $a < 10; $a ++) {
    for($b = 0; $b < 10; $b ++) {
        echo $a . $b."<br/>";
        break 2;
        //后面的整数从内到外第n层,当前为第一层
    }
    
}
?>

结果: 00 10 20 30 40 50 60 70 80 90 00