php面试题7(1、unset变量是删除栈变量,并不删除堆变量)(2、php爬虫特别简单: 可以file_get_contents和直接fopen)

时间:2023-03-09 15:32:13
php面试题7(1、unset变量是删除栈变量,并不删除堆变量)(2、php爬虫特别简单: 可以file_get_contents和直接fopen)

php面试题7(1、unset变量是删除栈变量,并不删除堆变量)(2、php爬虫特别简单: 可以file_get_contents和直接fopen

一、总结

1、unset变量是删除栈变量,并不删除堆变量

2、php爬虫特别简单: 可以file_get_contents和直接fopen

第一种方法:
$str=file_get_contents(‘http://www.baidu.com’);
第二种方法:
$fp=fopen(‘http://www.baidu.com’,’r’);

二、php面试题7

谈谈你对MVC 的认识,介绍几种目前比较流行的MVC 框架?
MVC 是一种设计模式中:
M 是model 模型,业务逻辑层
V 是视图view 主要负责用户交互层
C 是控制器 是连接视图和模型的桥梁,就比如一个工厂,C 是老板M 是工厂,V 是显示给用户
的产品,mvc 很好的
Mvc 优点:
1) 低耦合性
2) 高重用性和可使用行
3) 快速的部署
4) 可维护性

html 表单中 GET 与POST 提交方法的区别?
$_GET 传参是请求HTTP 协议通过url 参数传递和接收,会在浏览器地址栏中看到
IE 的url 最大长度是2083 个字节,可以用于GET 传递数据的长度是2048 个字节,
$_POST 是实体数据传参,隐藏式的,可以通过表单提交大量信息

请简述SESSION 与COOKIE 的区别?

区别:
1,SESSION:存储在服务器端, cookie:存储在客户端
2,两者都可通过时间来设置时间长短
3,cookie 不安全,考虑安全性还是用 session
4,session 保存到服务器端,如果访问量过大,对服务器性能很影响,应使用 memcache 缓存
session
5,单个 COOKIE 在客户端限制是 3K,即存放的 cookie 不能超过 3K,SESSION 没有限制
#linux 下一般放置 session 在/tmp/session-*

求两个日期的差数,例如 2007-2-5 ~ 2007-3-6 的日期差数。
Strtotime(“2007-3-6”)-strtotime(“2007-2-5”)

写出如下程序的输出结果:
<?
$test='aaaaaa';
$abc=&$test;
unset($test);
echo$abc;
?> 
aaaaa

unset变量是删除栈变量,并不删除堆变量

在空表 News 中,字段 ID 为自增主键,批量插入 17 条记录之后,发现最后三条数据有误,
删除此三条记录后重启 Mysql 数据库,再重新插入三条记录,请问最后一条记录的 ID 值是多
少?

id 为 20

至少写出一种验证 139 开头的 11 位手机号码的正则表达式:
/^139\d{8}$/

请写一个函数,实现以下功能:
字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”。

第一种:
<?php
function demo($string){
$arr=explode('_',$string);
foreach($arr as $key=>$val){
$arr[$key]=ucfirst($val);
}

return implode('',$arr);
}
?>

php面试题7(1、unset变量是删除栈变量,并不删除堆变量)(2、php爬虫特别简单: 可以file_get_contents和直接fopen)

请写一个函数将 1234567890 转换成 1,234,567,890 每 3 位用逗号隔开的形式:

第一种方法:
<?php
$str='1234567890';
echo number_format($str);
?>
第二种方法:
<?php
$str='1234567890';
function demo($str){
$str=strrev($str);
$arr=str_split($str,3);
 $str=strrev(implode(',',$arr));
}
demo($str);
?>

有 A(id,sex,par,c1,c2),B(id,age,c1,c2)两张表,其中 A.id 与 B.id 关联,现在要求写一条
SQL 语句,将 B 中 age>50 的记录的 c1、c2 更新到 A 表中统一记录中的 c1、c2 字段中。
update A,B set A.c1=B.c1, A.c2=B.c2 where A.id=B.id and B.age>50

【Linux 知识】
如何实现每天 0 点钟重新启动服务器。
分 时 日 月 星期
Crontab -e
00 00 * * * /sbin/reboot
分 时 日 月 周

2.当前目录下有一个文件为 showme.sh , 如何修改文件,将其指定为使用 /bin/bash 运
行(5 分),如何修改其权限为所有用户可读写,所有用户可执行:
Vi showme.sh
#!/bin/bash #在最开头部分加上这句话就可以了
Chmod 777 showme.sh

当前目录下有一个文件为 showme.sh,如何修改其所有人为 root:
Chown root showme.sh

chown root chowme.sh
chown :root chowme.sh
chown root:root chowme.sh

【附加部分】
1.使用 thinkphp 在控制器(Action)中传递一个一维数组到视图(Tpl),并将数组循环
显示在前台页面,请简要的写出前后台的主要代码。
Action 中内容
public function index()
{
$index=array("a","b","c");
$this->assign("index",$index);
$this->display();
}
Tpl 中内容: //因为是一位数组不用 volist
<foreach name= "index" item= "val" >
<h1><{$val}></h1>
</foreach>

php面试题7(1、unset变量是删除栈变量,并不删除堆变量)(2、php爬虫特别简单: 可以file_get_contents和直接fopen)

第一种方法:
$str=file_get_contents(‘http://www.baidu.com’);
第二种方法:
$fp=fopen(‘http://www.baidu.com’,’r’);
$str=’’;
While(!feof($fp)){
$str.=fread($fp,’1024’);
}

当涉及到转化编码时:

php面试题7(1、unset变量是删除栈变量,并不删除堆变量)(2、php爬虫特别简单: 可以file_get_contents和直接fopen)

4 请用 php 将上题中读取出的网页内容的<title>标签的值解析出来:
preg_match('/<title>(.*)<\/title>/',$str,$arr);
/**
$arr 的结构
Array
(
[0] => <title>aaaaa<title>
[1] => 文件内容)
*/
echo $arr[1];