PHP常见的一些问题总结(收藏)
本篇文章给大家带来的内容是关于PHP常见的一些问题总结(收藏),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
1. 字符串定义的时候单引号和双引号有什么区别?
单引号加载速度比双引号加载速度快
2.echo(),print(),print_r()的区别?
(1)echo 是语法,Output one or more strings,没有返回值;
(2)print 是函数,不能输出数组和对象,Outputastring,print
有返回值;
(3)print_r 是函数,可以输出数组。print_r 是个比较有意思 的函数,可以输出 stirng、int、float、array、object 等,输 出 array 时会用结构表示,print_r 输出成功时返回 true;而 且 print_r 可以通过 print_r($str,true)来,使 print_r 不输出而 返回 print_r 处理后的值。此外,对于 echo 和 print,基本以 使用 echo 居多,因为其效率比 print 要高。
3. 按照功能分类说说都有哪些字符串处理函数?这些函数的作用是什么?
A. 字符串输出函数
(1)echo $a,$b,$c......; 是一个语言结构,而不是一个真正的
函数。
(2)print($a) 本函数输出字符串。若成功则返回 1,失败 返回 0
(3)print_r($a)
(4)var_dump($a); 能输出类型、长度、值
B. 去除字符串首尾空格的函数: trim ltrim rtrim(别名: chop) 使用第二个参数,还可以去除指定的字符。
C. 转义字符串函数:addslashes()
D. 获取字符串长度的函数:strlen()
E. 截取字符串长度的的函数:substr()
F. 检索字符串函数: strstr() , strpos()
G. 替换字符串函数:str_replace()
4. 请给出以下问题的正确答案?
1).$arr = array('james', 'tom', 'symfony');请将$arr 数组的值 用 ’,’ 分 割 并 合 并 成 字 符 串 输 出 ?
1 |
|
2).$str = ‘jack,james,tom,symfony’; 请将$str 用’,’分 割 , 并 把 分 割 后 的 值 放 到 $arr 数 组 中 ?
1 |
|
3).$arr=array(3,7,2,1,’d’,’abc’);请将$arr按照从大到小的顺序排序,并保持其键值不变?
1 2 |
|
4).$mail = “gaofei@163.com”;请将此邮箱的域(163.com)取出来并打印,看最多能写出几种方法?
1 2 3 |
|
5.页面字符出现乱码,怎么解决?
1.首先考虑当前文件是不是设置了字符集。查看是不是 meta 标签中写了 charset,如果是 php 页面还可以看看是不是
在 header()函数中指定了 charset;
例如:
1 2 3 |
|
2.如果设置了字符集(也就是 charset),那么判断当前文件
保存的编码格式是否跟页面设置的字符集保持一致,
两者必须保持统一;
3.如果涉及到从数据库提取数据,那么判断数据库查询时的
字符集是否跟当前页面设置的字符集一致,两者必须统一,
例如:
1 |
|
6. 正则表达式是什么?php 中有哪些常用的跟正则相关的 函数?请写出一个 email 的正则,中国手机号码和座机号码的正则表达式?
正则表达式是用于描述字符排列模式的一种语法规则。正则表达式也叫做模式表达式。网站开发中正则表达式最常用于表单提交信息前的客户端验证。
比如验证用户名是否输入正确,密码输入是否符合要求, email、手机号码等信息的输入是否合法
在 php 中正则表达式主要用于字符串的分割、匹配、查找和
替换操作。
preg 系列函数可以处理。具体有以下几个:
stringpreg_quote(stringstr[,stringdelimiter])
转义正则表达式字符 正则表达式的特殊字符包括:.\\+*? [^]$(){}=!<>|:。
preg_replace-- 执行正则表达式的搜索和替换
mixed preg_replace ( mixed pattern, mixed replacement, mixed subject[,intlimit]
preg_replace_callback -- 用回调函数执行正则表达式的搜索
和替换
mixed preg_replace_callback ( mixed pattern, callback callback, mixedsubject[,intlimit])
preg_split-- 用正则表达式分割字符串
array preg_split ( string pattern, string subject [, int limit [, int flags]])
常用的正则表达式写法:
中文:/^[\u4E00-\u9FA5]+$/
手机号码:/^(86)?0?1\d{10}$/
EMAIL:
/^[\w-]+[\w-.]?@[\w-]+\.{1}[A-Za-z]{2,5}$/
密码(安全级别中) :
/^(\d+[A-Za-z]\w*|[A-Za-z]+\d\w*)$/
密码(安全级别高) :
/^(\d+[a-zA-Z~!@#$%^&(){}][\w~!@#$%^&(){}]*|[a-zA-Z~! @#$%^&(){}]+\d[\w~!@#$%^&(){}]*)$/
7.preg_replace()和 str_ireplace()两个函数在使用上有什么 不同?preg_split()和 split()函数如何使用?
preg_replace — 执行正则表达式的搜索和替换
str_ireplace — str_replace() 的 忽 略 大 小 写 版 本 str_replace — 子字符串替换
preg_split — 用正则表达式分割字符串
split — 用正则表达式将字符串分割到数组中
8. 获取当前时间戳的函数主要有哪些?用 PHP 打印出今 天的时间,格式是2010-12-10 22:21:21?用 PHP 打印出前一天的时间格式是2010-12-10 22:21:21? 如何把2010-12-25 10:30:25变成 unix 时间戳?
1 2 3 4 |
|
9.在 url 中用 get 传值的时候,若中文出现乱码,应该用哪个函数对中文进行编码?
用户在网站表单提交数据的时候,为了防止脚本攻击(比如 用户输入<script>alert(111);</script>),php 端接收数据的
时候,应该如何处理?
使用 urlencode()对中文进行编码,使用 urldecode()来解码。
使用 htmlspecialchars($_POST[‘title’])来过滤表单传参就可以避免脚本攻击。
10. 说 说 mysql_fetch_row() 和 mysql_fetch_assoc() 和 mysql_fetch_array 之间有什么区别?
第一个是返回结果集中的一行作为索引数组,第二个是返回
关联数组,而第三个既可以返回索引数组也可以返回关联数 组,取决于它的第二个参数 MYSQL_BOTH MYSQL_NUM MYSQL_ASSOC 默认为 MYSQL_BOTH
1 2 3 |
|
11. 请说出目前学过的返回是资源的函数?
答:fopen(打开文件)
imagecreatefromjpeg(png gif) — 从 JPEG
文件新建一图像
imagecreatetruecolor — 新建一个真彩色
图像
imagecopymerge — 拷贝并合并图像的一
部分
imagecopyresized — 拷贝部分图像并调
整大小
mysql_connect — 打开一个到 MySQL MySQL MySQL MySQL
服务器的连接
mysql_query();只有这执行 select 的时候成功,才返回资源, 失败返回 FALSE
12. 文件上传需要注意哪些细节?怎么把文件保存到指定目录?怎么避免上传文件重名问题?
1.首现要在 php.ini 中开启文件上传;
2.在 php.ini 中有一个允许上传的最大值,默认是2MB。必要
的时候可以更改;
3. 上 传 表 单 一 定 要 记 住 在 form 标 签 中 写 上 enctype="multipart/form-data";
4. 提交方式 method 必须是 post;
5. 设定 type="file" 的表单控件;
6.要注意上传文件的大小 MAX_FILE_SIZE、文件类型是否符合要求,上传后存放的路径是否存在。可以通过上传的文件名获取到文件后缀,然后使用时间戳+文件后缀的方式为文件重新命名,这样就避免了重名。可以自己设置上传文件的保存目录,与文件名拼凑形成一个文件 路径,使用 move_uploaded_file(),就可以完成将文件保存到指定目录。
13. $_FILES 是几维数组?第一维和第二维的索引下标分别是什么?批量上传文件的时候需要注意什么?
二维数组。第一维是上传控件的 name,二维下标分别为 name/type/tmp_name/size/error.
14.header()函数主要的功能有哪些?使用过程中注意什么?
答:
1 2 3 4 5 6 |
|
15. 文件下载的时候如果使用 header()函数?
答 : header("content-type: application/octet-stream;charset=UTF-8"); //在这里加 utf-8和
在上面定义有什么区别?、??
1 2 3 |
|
16. 什么是 ajax?ajax 的原理是什么?ajax 的核心技术是什 么?ajax 的优缺点是什么?
ajax 是 asynchronous JavaScript JavaScript JavaScript JavaScript and xml 的 缩 写 , 是 javascript、xml、css、DOM 等多个技术的组合。'$'是 jQuer jQuer jQuer jQuery y y y 的别名.
页面中用户的请求通过 ajax 引擎异步地与服务器进行通 信,服务器将请求的结果返回给这个 ajax 引擎,
最后由这个ajax引擎来决定将返回的数据显示到页面中的 指定位置。Ajax 最终实现了在一个页面的指定位置可以加载 , 另一个页面所有的输出内容。
这样就实现了一个静态页面也能获取到数据库中的返回数 据信息了。所以 ajax 技术实现了一个静态网页在不刷新整个
页面的情况下与服务器通信,
减少了用户等待时间,同时也从而降低了网络流量,增强了
客户体验的友好程度。
Ajax 的优点是:
1. 减轻了服务器端负担,将一部分以前由服务器负担的工
作转移到客户端执行,利用客户端闲置的资源进行处理;
2. 在只局部刷新的情况下更新页面,增加了页面反应速度,
使用户体验更友好。
Ajax 的缺点是不利于 seo 推广优化,因为搜索引擎无法直接 访问到 ajax 请求的内容。
ajax 的核心技术是 XMLHttpRequest,它是 javascript 中的
一个对象。
17.jquery 是什么?jquery 简化 ajax 后的方法有哪些?
jQuery 是 Javascript 的一种框架。
$.get(),$.post(),$.ajax()。$是 jQuery 对象的别名。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
18. 什么是会话控制?
简单地说会话控制就是跟踪和识别用户信息的机制。会话控制的思想就是能够在网站中跟踪一个变量,通过这个变量,系统能识别出相应的用户信息,根据这个用户信息可以得知用户权限,从而展示给用户适合于其相应权限的页面内容。 目前最主要的会话跟踪方式有 cookie,session。
19. 会话跟踪的基本步骤
1).访问与当前请求相关的会话对象
2).查找与会话相关的信息
3).存储会话信息
4).废弃会话数据
20. 使用 cookie 的注意事项有哪些?
1) setcookie()之前不可以有任何页面输出,就是空格,空白行也不可以;
2) setcookie()后,在当前页面调用$_COOKIE['cookiename'] 不会有输出,必须刷新或到下一个页面才可以看到 cookie值;
3)不同的浏览器对 cookie 处理不同,客户端可以禁用 cookie,浏览器也可以闲置 cookie 的数量,一个浏览器能创 建的 cookie 数量最多300个,并且每个不可以超过4kb,每个 web 站点能设置的 cookie 总数不能超过20个。
4) cookie 是保存在客户端的,用户禁用了 cookie,那么 setcookie 就不会起作用了。所以不可以过度依赖 cookie。
21. 使用 session 的时候,通过什么来表示当前用户,从而与其他用户进行区分?
sessionid , 通 过 session_id() 函 数 可 以 取 得 当 前 的 session_id。
22. session 和 cookie 的使用步骤分别是什么?什么 是 sesssion 和 cookie 的生命周期?session 和 cookie 的区别是什么?
1. cookie 是保存在客户端机器的,对于未设置过期时间的 cookie,cookie 值会保存在机器的内存中,只要关闭浏览器 则 cookie 自动消失。如果设置了 cookie 的过期时间,那么 浏览器会把 cookie 以文本文件的形式保存到硬盘中,当再次 打开浏览器时 cookie 值依然有效。
2. session 是把用户需要存储的信息保存在服务器端。每个用户 的 session 信息就像是键值对一样存储在服务器端,其中的 键就是 sessionid,而值就是用户需要存储信息。服务器就是通过 sessionid 来区分存储的 session 信息是哪个用户的。
两者最大的区别就是 session 存储在服务器端,而 cookie 是 在客户端。session 安全性更高,而 cookie 安全性弱。
3. session 在 web 开发中具有非常重要的份量。它可以将用户正确登录后的信息记录到服务器的内存中,当用户以此身份访问网站的管理后台时,无需再次登录即可得到身份确认。而没有正确登录的用户则不分配session 空间,即便输入了 管理后台的访问地址也不能看到页面内容。通过session 确定了用户对页面的操作权限。
使用 session 的步骤:
1. 启动 session:使用 session_start()函数来启动。
2. 注册会话:直接给$_SESSION 数组添加元素即可。
3. 使用会话:判断 session 是否为空或者是否已经注册,如果已经存在则像普通数组使用即可。
4. 删除会话:
1.可以使用 unset 删除单个 session;
2.使用$_SESSION=array()的方式,一次注销所有的会话变量;
3.使用 session_destroy()函数来彻底销毁 session。
cookie 怎么使用?
1. 记录用户访问的部分信息
2. 在页面间传递变量
3. 将所查看的 internet 页存储在 cookies 临时文件夹中,可以提高以后的浏览速度。
创建 cookie:setcookie(stringcookiename,stringvalue,int expire);
读取 cookie:通过超级全局数组$_COOKIE 来读取浏览器端 的 cookie 的值。
删除 cookie:有两种方法
1.手工删除方法:
右击浏览器属性,可以看到删除 cookies,执行操作即可将所 有 cookie 文件删除。
2.setcookie()方法:
跟设置 cookie 的方法一样,不过此时将 cookie 的值设置为 空,有效时间为0或小于当前时间戳。
23. 设置或读取 session 之前,需要做什么?
可以直接在php.ini中开启session.auto_start=1或者在页面 头部session_start();
开启 session,session_start()前面不能有任何输出,包括空行。
24. 在实际开发中,session 在哪些场合使用?
session 用来存储用户登录信息和用在跨页面传值。
1)常用在用户登录成功后,将用户登录信息赋值给 session;
2)用在验证码图片生成,当随机码生成后赋值给 session。
25. 注销 session 会话的形式有几种?
1 2 |
|
PHP常见的一些问题总结(收藏)的更多相关文章
- SQL笔记 [长期更新] (-2013.7)
--IF EXISTS(SELECT * FROM dbo.SysObjects WHERE ID = object_id(N'[TABLEA]') ) DROP TABLE tableA--CREA ...
- Java面经入口(持续更新...)
大数据面经 https://zhuanlan.zhihu.com/go-for-it Java 基础知识复习 您可能不知道Java基础40道常见面试题及详细答案 hashcode详解 Java St ...
- IOS常见错误分析解决(一直更新) 你值得收藏-综合贴
-来自收藏总结 综合了好多的常见错误 1:clang failed with exit code 254 一:检測代码中 是否 有 NSLog 打印了 返回 void 的值. 2:Verify exi ...
- C语言基础:常见循环语句 分类: iOS学习 c语言基础 2015-06-10 21:46 13人阅读 评论(0) 收藏
for语句 for( 初始化表达式; 循环判断条件 ;增量表达式); while(条件表达式){ 循环体; } 先判断条件表达式,如果为真就执行循环体,执行完再去判断条件表达式 do{ 循环体; } ...
- Android 应用中十大常见 UX 错误 分类: H1_ANDROID 2013-09-21 13:59 404人阅读 评论(0) 收藏
转载自:http://www.apkbus.com/android-5661-1.html 摘要: Android 开发者关系团队每天都会试用无数的 App 或者受到无数的开发者发来的请求评测的 Ap ...
- 常见数据结构的 Python 实现(建议收藏)
数据结构作为计算机基础的必修内容,也是很多大型互联网企业面试的必考题.可想而知,它在计算机领域的重要性. 然而很多计算机专业的同学,都仅仅是了解数据结构的相关理论,却无法用代码实现各种数据结构. 今日 ...
- Python | 常见的反爬及解决方法,值得收藏
我们都知道Python用来爬数据,为了不让自家的数据被别人随意的爬走,你知道怎么反爬吗?今天播妞带着大家一起见识见识常见的反爬技术. 很多人学习python,不知道从何学起.很多人学习python,掌 ...
- Linux 运维请务必收藏~ Nginx 五大常见应用场景
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ Nginx 是一个很强大的高性能 Web 和反向代理服务,它具有很多非常优越的特性,在连接高并 ...
- 【收藏】Android更新UI的几种常见方法
----------------将会调用onDraw()重绘控件---------------- 1.view.invalidate刷新UI(主线程) 2.view.postInvalidate刷 ...
随机推荐
- 【剑指offer】判断出栈序列是否合法
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应 ...
- Reachability实时监控网络变化
Reachability是一种实时观察网络发生变化控件,如当你的手机处于WiFi情况下,他就会检测环境,当处于GPS的情况下改变环境,当处于无网络的情况下又是一种环境.下面我们看下关于Reachabi ...
- go api json 输出尝试
package main import ( "fmt" "net/http" //"net/url" "github.com/dr ...
- 红黑树Python实现
# coding=utf-8 # 红黑树Python实现 # 颜色常量 RED = 0 BLACK = 1 def left_rotate(tree, node): if not node.right ...
- Python全栈开发记录_第二篇(文件操作及三级菜单栏增删改查)
python3文件读写操作(本篇代码大约100行) f = open(xxx.txt, "r", encoding="utf-8") 不写“r”(只读)默认是只 ...
- 学习C++,应该循序渐进的看哪些书?
在某博客上看到的一个C++书籍阅读清单,可以参考下: 阶段 1<Essential C++>这是一本内容不多但很实用的C++入门书籍,强调快速上手与理解C++编程.本书主要围绕一系列逐渐复 ...
- leetcode32
class Solution { public: int longestValidParentheses(string s) { ; stack<int> st; ; i < n; ...
- k8s定义Deployment,和service
定义一个Deployment和service做个简单的笔记 有时候我们需要开放Pod的多个端口,比如nginx的80和443端口,那如何定义Deployment文件呢,定义单个端口如下 apiVers ...
- LeetCode OJ 117. Populating Next Right Pointers in Each Node II
题目 Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode * ...
- java导出excel模板数据
Java导出excel数据模板,这里直接贴代码开发,流程性的走下去就是步骤: String[] colName=new String[]{"期间","科目代码" ...