php考试

二、填空

  • substr_replace(‘要操作的字符串’,‘新串’,start[,length])
    • 作用:替换指定的串,而不是关键字
    • 返回值:不确定的数据类型
    • start:
      • 0 从第一个字符开始
      • 正数:从字符串的第几个位置开始
      • 负数:从字符串的倒数第几个位置开始
    • length:默认整个串,负数:把最后几个替换掉
$str = "what are you doing?";
$new_str = "搞事情";
echo substr_replace($str,$new_str,0),"<br/>";
echo substr_replace($str,$new_str,3),"<br/>";
echo substr_replace($str,$new_str,-6),"<br/>";

结果:
搞事情
wha搞事情
what are you 搞事情

  • explode(‘分割符’,‘待分割字符串’ [,limit])

    • 作用:分割字符串
    • 返回值:数组类型
    • limit:数组元素个数的限制,剩余的全部原样输出
      • 0 1 算1
      • 负数 是除了最后几个不是数组的元素,其他的都是
  • implode(‘连接符’,‘待链接的字符串’)

    • 作用:按指定连接符,把数组链接成一个字符串
    • 返回值:一个字符串
$str = "php@java@python@html";
$str_ary = explode("@", $str, 1);
print_r($str_ary);
echo "<br/>";
$arry = implode("@", $str_ary);
echo $arry, "<br/>", var_dump($arry);


// Array ( [0] => php@java@python@html )
// php@java@python@html
// string(20) "php@java@python@html"

  • str_ireplace(‘old’,‘new’,‘要操作的字符串’[,int &count])
    • 作用:替换关键字
    • 返回值:不确定的数据类型
    • old:要替换的关键字 可以用数组来指定多个关键字
    • new:要替换新值
    • [int &count]:要替换的数量
    • 不区分大小写,str_replace()区分大小写
$str = "Php@java@python@html";
$ary = array('p','v');
echo str_ireplace($ary,'x',$str);
结果: xhx@jaxa@xython@html

  • strftime(format [,时间戳])
    • 作用:返回指定 format 的时间
    • 返回值:字符串类型
echo strftime("%b %d %Y %X");

结果:
Dec 26 2019 11:16:02

  • $_SERVER(‘SERVER_ADDR’)
    • 作用:获取当前脚本运行的ip地址
echo $_SERVER['SERVER_ADDR'];
结果:
::1 

::1说明你的电脑开启了ipv6支持,这是ipv6下的本地回环地址(127.0.0.1)的表示。
因为你访问的时候用的是localhost访问的
  • substr(‘要操作的字符’, strat [,length] )
    • 作用:截取字符串
    • 返回值:字符串类型
    • start:从哪个索引开始 --如果是负数表示:从倒数第几个开始
    • length:截取的长度 --如果是负数表示:截取到倒数第几个(取不到)
$str = "123456789";
$sub_str = substr($str,-5,5);
echo $sub_str;

结果:
56789

简答题

1.面向对象的三个特性
  • 封装
    将数据和对数据的操作封装在一起,通过抽象(即实例)中抽取出共同的性质形成一般的概念,只要保留与外部的联系,对于开发人员知道如何使用即可,不需要去关系如何实现的。
  • 继承
    子类可以继承父类的属性和行为,同时又可以添加子类独有的数据和数据上的操作
  • 多态
    可以对方法进行重载和重写,一个函数名有着多种功能
2.each() 函数作用

返回当前元素的键和值,并将内部指针向前移动,如果指针超越了数组范围将会返回false
键备份两份,值备份两份
比如:

$people = array("Bill", "Steve", "Mark", "David");
print_r (each($people));
结果:
Array ( [1] => Bill [value] => Bill [0] => 0 [key] => 0 )
3.变量赋值和引用赋值的区别(略)
4. 单引号和双引号区别

1.单引号执行速度比双引号执行速度快
2.单引号不会解析变量,只会把变量当成串输出,双引号会把变量的值给解析出来
3.单引号只能转义 ’ 和 \ 其他的不行,双引号确都可以

5.数组常用的指针函数
  • current() 函数返回数组中的当前元素的值。
  • prev() 将内部指针指向数组中的上一个元素,并输出。
  • next() 将内部指针指向数组中的下一个元素,并输出。
  • end() 将内部指针指向数组中的最后一个元素,并输出。
  • reset() 将内部指针指向数组中的第一个元素,并输出。
  • each() 返回当前元素的键和值,并将内部指针向前移动
6.textarea 的warp属性

soft :当在表单中提交时,textarea 中的文本不包含换行符号。默认值。
hard :当在表单中提交时,textarea 中的文本换行(包含换行符)。
当使用 “hard” 时,必须规定 cols 属性。

7.正则构成、如何取消贪婪模式
  • 正则构成
    1. 原子(普通字符:a-z A-Z 0-9 、原子表、转义字符)

    2. 元字符(有特殊功能的字符,如:# 、*)

    3. 模式修正符(系统内置部分字符 i、m、S、U …)

取消贪婪模式

	$reg1 = '/a+/';
	$str = 'aaaaaaaaaaa';
	$num1 = preg_match_all($reg1, $str);
	echo $num1, "<br/>";
	$reg2 = '/a+?/';
	$num2 =  preg_match_all($reg2, $str);
	echo $num2, "<br/>";
	
结果:
1
11
8.
  • preg_match_all(‘正则’, ‘被匹配的字符串’ [,array matches])
    • 作用:按照正则去匹配字符串
    • 返回值:返回匹配成功的次数
    • 如果有matches 那么每次匹配的结果都将被存储到数组matches中
  • perg_quote(‘str1’ [,str2])
    • 作用:将str1中所有特殊字符进行转义
    • 返回值:被转义后的字符串
    • 如果有str2 str2中的特殊字符也会被转义掉
  • preg_replace(‘正则’,‘new’,‘被操作的字符串’ [,limit])
    • 作用:替换被正则匹配成功的字符/串
    • 返回值:字符串
    • 有limit 可以限制替换的次数
9. cookie 删除的方法
  1. setcookie() 设置过期时间
  2. 在浏览器中清除cookie
10. cookie功能

1.可以记录访客的某些信息,如 访问的网页次数,时间,用户名,账号密码
2.在页面之间传递变量, 如:可以用setcookie(‘name’,‘xxx’) 设置cookie 变量name,用$_cookie[‘name’] 把变量传递给页面
3.可以查看internet存储在cookies临时文件夹中,以后提高浏览速度

12 . 使用session的步骤
  1. 启动会话 session_start()
  2. 注册会话 $_SESSION[‘session变量’] = value
  3. 使用会话 $_SESSION[‘session_name’]
  4. 删除会话 unset($_SESSION[‘session变量’] )
13. 多态的两种形式
  1. 重载:函数名相同,参数不同(类型或者个数不同)
  2. 从写:除了方法体不一样 函数名、参数、返回类型、权限、等都必须相同
14. 什么封装?封装又称为什么?又什么优点?

将数据和对数据的操作封装在一起,通过抽象(即实例)中抽取出共同的性质形成一般的概念,又称为数据隐藏,只要保留与外部的联系,对于开发人员知道如何使用即可,不需要去关系如何实现的。
五、
1.代码实例

$user = $_POST["username"];

if(!isset($_COOKIE["visit_user"])){  // 检查这个 名字为 visit_user 的cookie变量是否设置
    setcookie("visit_user");
    echo "$user".'你是第一次访问本站';
    echo "<br/>";
}else{
    setcookie('visit_user',date("y-m-d H:i:s"),time()+60*60); // date作用是记录你上次访问网站的时间
    echo "您上次访问的时间为:".$_COOKIE["visit_user"];
    echo "<br>";
}
echo "您本次访问本网站的时间为:".date("y-m-d H:i:s");

代码实例

<form action="check_remember.php" method="POST">
    账号:<input type="text" name="username"><br />
    密码:<input type="text" name="pwd"><br />
    记住账号密码:<input type="checkbox" name="remember">
    <input type="submit" value="登录">
</form>
<?php 

if(isset($_COOKIE['name'])&&isset($_COOKIE['pwd'])){
    $user=$_COOKIE['name'];
    $pwd= $_COOKIE['pwd'];
    echo "<script>
        var input = document.getElementsByTagName('input')
        input[0].setAttribute('value',$user)
        input[1].setAttribute('value',$pwd)
    </script>";




$user = $_POST["username"];
$pwd = $_POST['pwd'];
if(isset($_POST['remember']) && $_POST['remember']=='on'){
    setcookie('name',$user);
    setcookie('pwd',$pwd);
}
echo "用户名:"."$user".", 密码:"."$pwd","<br/>";
echo '<a href="remember.php">返回</a>';
}

六、
1.

class human{
    public $name;
    public $age;
    function __construct($name,$age)
    {
        $this->name = $name;
        $this->age = $age;        
    }
    public function say(){
        echo "我叫".$this->name."今年".$this->age."岁。";
    }
}
class teacher extends human{
    public $subject;
    function __construct($name,$age,$subject)
    {
        $this->name = $name;
        $this->age = $age;
        $this->subject = $subject; 
    }
    public function teach(){
        echo "我讲授课程".$this->subject;
    }
}

$t1 = new teacher('李四',42,'计算机');
$t1->say();
$t1->teach();

结果:
我叫李四今年42岁。我讲授课程计算机

2 3 4 和1一样略

接口:php 和 java 一样 接口中只能由常量和抽象方法

interface Singer
{
    function sing();
}
class Student implements Singer
{
    private $sName;
    function getSname()
    {
        echo $this->sName;
    }
    function sing()
    {
        echo "my name is" . $this->sName . ",I am singing...";
    }
    function __construct($name)
    {
        $this->sName = $name;
    }
    function study()
    {
        echo "my name is" . $this->sName . "I am a studing....";
    }
}
$s1 = new Student('Jerrt');
$s1->sing();
$s1->study();

login.php

<form action="checklog.php" method="post">
    账号:<input type="text" name="user"><br/>
    密码:<input type="password" name="pwd"><br/>
    <input type="submit" value="登录">
</form>

checklog.php

$user = $_POST['user'];
$pwd = $_POST['pwd'];
if($user==='admin' && $pwd==='123'){
    session_start();  // 开启会话
    $_SESSION['user']=$user; // 注册会话
    $_SESSION['pwd']=$pwd;
    header("Location:index.php");  // 页面跳转用的
}else{
    header("Location:login.php");
}

index.php
session_start(); //必须先开启会话
//使用会话
if($_SESSION['user']==''){
    header("Location:login.php");
}else{
    echo "用户:".$_SESSION['user']."欢迎您";
}
login.php

<form action="checklog.php" method="post">
    账号:<input type="text" name="user"><br/>
    密码:<input type="password" name="pwd"><br/>
    <input type="submit" value="登录">
</form>

checklog.php

$user = $_POST['user'];
$pwd = $_POST['pwd'];
if($user==='admin' && $pwd==='123'){
   $isLogin = 1;
   setcookie('user',$user,time()+60*60*24);
   setcookie('isLogin',$isLogin,time()+60*60*24);
   header("Location:index.php");
    
}else{
    header("Location:login.php");
}


index.php

if(isset($_COOKIE['isLogin'])&&$_COOKIE['isLogin']==1){
    echo "用户:".$_COOKIE['user']."欢迎您";
     
}else{
    header("Location:login.php"); 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值