>  기사  >  백엔드 개발  >  PHP의 몇 가지 일반적인 문제 요약(컬렉션)

PHP의 몇 가지 일반적인 문제 요약(컬렉션)

不言
不言원래의
2018-09-10 14:18:571742검색

이 글은 PHP의 몇 가지 일반적인 문제에 대한 요약(모음)을 제공합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

1. 문자열을 정의할 때 작은따옴표와 큰따옴표의 차이점은 무엇인가요?

작은따옴표가 큰따옴표보다 빠르게 로드됩니다.

2 echo(), print() 및 print_r()의 차이점은 무엇입니까? ?

(1)echo는 구문입니다. 하나 이상의 문자열을 출력하고 반환 값은 없습니다.
(2)print는 함수이며 배열과 객체를 출력할 수 없습니다. Outputastring, print # 🎜🎜#에는 반환 값이 있습니다.
(3)print_r은 배열을 출력할 수 있는 함수입니다. print_r은 문자열, int, float, 배열, 객체 등을 출력할 수 있는 흥미로운 함수입니다. 배열을 출력할 때 print_r은 출력이 성공하면 true를 반환하고 print_r($)을 전달할 수 있습니다. str,true)이므로 print_r은 print_r에서 처리한 값을 출력하지 않고 반환합니다. 또한 echo와 print의 경우 print보다 효율적이기 때문에 기본적으로 echo를 사용합니다.

3. 기능 분류에 따른 문자열 처리 기능은 무엇인가요? 이 기능은 무엇을 합니까?

A. 문자열 출력 함수 (1)echo $a,$b,$c...;
기능.
(2)print($a) 이 함수는 문자열을 출력합니다. 성공하면 1을 반환하고, 실패하면 0을 반환합니다.
(3)print_r($a)
(4)var_dump($a); 유형, 길이, 값을 출력할 수 있습니다
B. string 선행 및 후행 공백에 대한 함수: Trim ltrim rtrim(별칭: Chop) 두 번째 매개변수를 사용하면 지정된 문자를 제거할 수도 있습니다.
C. 문자열 길이를 가져오는 함수: addlashes()
D. 문자열 길이를 가로채는 함수: substr()#🎜 🎜#F. 문자열 함수: strstr(), strpos()
G. 문자열 바꾸기 함수: str_replace()


4에 대한 정답은 무엇입니까? 다음 질문은 무엇입니까?

1).$arr = array('james', 'tom', 'symfony'); 병합을 문자열 출력으로 병합하시겠습니까?

echo implode(‘,’,$arr);

2).$str = 'jack,james,tom,symfony'; $arr 배열의 최종 값은 무엇입니까?

$arr = explode(‘,’,$str);

3).$arr=array(3,7,2,1,'d','abc');$arr을 변경하세요. 가장 큰 것부터 가장 작은 것 순으로 정렬하고 키 값을 변경하지 않고 유지하시겠습니까?

arsort($arr);
print_r($arr);
4).$mail = “gaofei@163.com”; 이 이메일의 도메인(163.com)을 꺼내서 인쇄해 보세요. 대부분 몇 가지 방법을 쓸 수 있나요?

echostrstr($mail,'163');
echosubstr($mail,7);
$arr=explode("@",$mail);echo$arr[1];

5. 페이지의 문자가 깨졌습니다.

#🎜 🎜#1. 먼저 현재 파일에 문자 세트가 있는지 확인하세요. charset이 메타 태그에 기록되어 있는지 확인하세요. PHP 페이지인 경우 이 header() 함수에 charset을 지정하는지 여부도 확인할 수 있습니다.

예:

#🎜 🎜#

<meta http-equiv="Content-Type" content="text/html;
charset=utf-8"/>
header(“content-type:text/html;charset=utf-8”);


2. 문자셋(즉, 문자셋)이 설정되어 있다면 현재 파일
에 저장된 인코딩 형식이 문자셋셋과 일치하는지 확인합니다. 페이지에서 두 개가 통합되어야 합니다.

3. 데이터베이스에서 데이터를 추출하는 경우 데이터베이스를 쿼리할 때

문자 집합이 문자 집합과 일치하는지 확인합니다. 현재 페이지에서는 둘이 통합되어야 합니다. #🎜🎜 #예:

mysql_query(“set names utf8”)。

6. 正则表达式是什么?php 中有哪些常用的跟正则相关的 函数?请写出一个 email 的正则,中国手机号码和座机号码的正则表达式?

正则表达式是用于描述字符排列模式的一种语法规则。正则表达式也叫做模式表达式。网站开发中正则表达式最常用于表单提交信息前的客户端验证。
比如验证用户名是否输入正确,密码输入是否符合要求, email、手机号码等信息的输入是否合法
在 php 中正则表达式主要用于字符串的分割、匹配、查找和
替换操作。
preg 系列函数可以处理。具体有以下几个:
stringpreg_quote(stringstr[,stringdelimiter])
转义正则表达式字符 正则表达式的特殊字符包括:.\\+*? [^]$(){}=!a8093152e673feb7aba1828c43532094|:。
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 时间戳?

echodate("Y-m-dH:i:s",strtotime(‘-1,days’));
date(&#39;Y-m-dH:i:s&#39;,time());
$unix_time = strtotime("2009-9-2 10:30:25");//变成 unix 时间戳
echodate("Y-m-dH:i:s",$unix_time);//格式化为正常时间格式

9.在 url 中用 get 传值的时候,若中文出现乱码,应该用哪个函数对中文进行编码?

用户在网站表单提交数据的时候,为了防止脚本攻击(比如 用户输入3f1c4e4b6b16bbbd69b2ee476dc4f83aalert(111);2cacc6d41bbb37262a98f745aa00fbf0),php 端接收数据的
时候,应该如何处理?
使用 urlencode()对中文进行编码,使用 urldecode()来解码。
使用 htmlspecialchars($_POST[‘title’])来过滤表单传参就可以避免脚本攻击。

10. 说 说 mysql_fetch_row() 和 mysql_fetch_assoc() 和 mysql_fetch_array 之间有什么区别?

第一个是返回结果集中的一行作为索引数组,第二个是返回
关联数组,而第三个既可以返回索引数组也可以返回关联数 组,取决于它的第二个参数 MYSQL_BOTH MYSQL_NUM MYSQL_ASSOC 默认为 MYSQL_BOTH

$sql=”select*fromtable1”;
$result=mysql_query($sql);
mysql_fetch_array($result,MYSQL_NUM);

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()函数主要的功能有哪些?使用过程中注意什么?

答:

header()发送 http 头信息
-header("content-type:text/html; charset=utf-8");-------------------//当前页面输出内容是 html,编 码为 utf-8格式
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-header("content-type:image/png gif jpeg");----------------------------------//当前页面输出内容的格式是图片
-header("refresh:5;url=http://www.1004javag.com/five/string.ph p");--//页面5秒后要跳转到新网址
-header("location:http://1004javag.com/five/string.php");----------//页面重定向

15. 文件下载的时候如果使用 header()函数?

答 : header("content-type: application/octet-stream;charset=UTF-8"); //在这里加 utf-8和
在上面定义有什么区别?、??

header("accept-ranges:bytes");
header("accept-length: ".filesize($filedir.$filename));
header("content-disposition: attachment; filename=".$filedir.$filename);

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 对象的别名。
代码如下:

$.post(异 步 访 问 的 url 地 址 , {&#39; 参 数 名&#39; : 参 数 值} , function(msg){
$("#result").html(msg);
});
$.get( 异 步 访 问 的 url 地 址 , {&#39; 参 数 名 &#39; : 参 数 值 } , function(msg){
$("#result").html(msg);
});
$.ajax({
type:"post",
url:loadUrl,
cache:false,
data:"参数名=" + 参数值,
success:function(msg){
$("#result").html(msg);
}
});

18. 什么是会话控制?

简单地说会话控制就是跟踪和识别用户信息的机制。会话控制的思想就是能够在网站中跟踪一个变量,通过这个变量,系统能识别出相应的用户信息,根据这个用户信息可以得知用户权限,从而展示给用户适合于其相应权限的页面内容。 目前最主要的会话跟踪方式有 cookie,session。

19. 会话跟踪的基本步骤

1).访问与当前请求相关的会话对象

2). 대화

3)와 관련된 정보

를 찾아보세요. 스토어 세션 정보

4). 세션 데이터 폐기

20. 쿠키 사용 시 주의사항은 무엇인가요?

1) setcookie() 이전에는 페이지 출력이 불가능하며 공백도 허용되지 않으며 빈 흰색 줄도 허용되지 않습니다.
2) setcookie() 이후에 $_COOKIE['cookiename']을 호출합니다. 현재 페이지가 출력되지 않습니다. 쿠키 값을 보려면 새로 고치거나 다음 페이지로 이동해야 합니다.
3) 클라이언트는 쿠키를 다르게 처리할 수 있으며 브라우저는 숫자를 유휴 상태로 만들 수도 있습니다. 브라우저가 생성할 수 있는 최대 쿠키 수는 300개이며, 각 쿠키는 4kb를 초과할 수 없습니다. 각 웹사이트에서 설정할 수 있는 총 쿠키 수는 20개를 초과할 수 없습니다.
4) 쿠키는 클라이언트 측에 저장됩니다. 사용자가 쿠키를 비활성화하면 setcookie가 작동하지 않습니다. 그러므로 쿠키에 너무 의존하지 마십시오.

21. 세션을 사용할 때 현재 사용자를 다른 사용자와 구별하기 위해 무엇을 사용합니까?

sessionid, 현재 session_id는 session_id() 함수를 통해 얻을 수 있습니다.

22. 세션과 쿠키를 사용하는 단계는 무엇인가요? 세션과 쿠키의 수명주기는 무엇입니까? 세션과 쿠키의 차이점은 무엇입니까?

1. 쿠키는 클라이언트 컴퓨터에 저장됩니다. 만료 시간이 설정되지 않은 쿠키의 경우 쿠키 값은 브라우저가 닫히는 동안 컴퓨터의 메모리에 저장됩니다. 쿠키 만료 시간이 설정되면 브라우저는 쿠키를 텍스트 파일 형식으로 하드 디스크에 저장하며, 브라우저를 다시 열어도 쿠키 값은 계속 유효합니다.
2. 세션은 사용자가 서버측에 저장해야 하는 정보를 저장하는 것입니다. 각 사용자의 세션 정보는 키-값 쌍처럼 서버 측에 저장됩니다. 여기서 키는 sessionid이고 값은 사용자가 저장해야 하는 정보입니다. 서버는 저장된 세션 정보가 어느 사용자에게 속하는지 구별하기 위해 sessionid를 사용합니다. 둘 사이의 가장 큰 차이점은 세션이 서버 측에 저장되는 반면 쿠키는 클라이언트 측에 저장된다는 것입니다. 세션 보안은 더 높은 반면 쿠키 보안은 약합니다.
3. 세션은 웹 개발에서 매우 중요한 역할을 합니다. 사용자가 서버의 메모리에 올바르게 로그인한 후 사용자의
정보를 기록할 수 있습니다. 사용자가 이 ID로 웹사이트의 관리 백엔드에 액세스하면 다시 로그인하지 않고도 신원 확인을 받을 수 있습니다. 올바르게 로그인하지 않은 사용자는 세션 공간을 할당받지 못하며, 관리 백그라운드 접속 주소를 입력하더라도 페이지 내용을 볼 수 없습니다. 사용자의 페이지 조작 권한은 세션을 통해 결정됩니다. 세션 사용 단계:

1. 세션 시작: session_start() 함수를 사용하여 시작합니다.

2. 세션 등록: $_SESSION 배열에 직접 요소를 추가하세요.
3. 세션 사용: 세션이 비어 있는지 또는 등록되었는지 확인합니다. 가 이미 존재하는 경우 일반 배열처럼 사용합니다.
4. 세션 삭제:
1. 단일 세션을 삭제하려면 $_SESSION=array()를 사용하세요.
3. session_destroy() 함수를 사용하여 세션을 완전히 삭제합니다.
쿠키는 어떻게 사용하나요?
1. 사용자 방문에 대한 일부 정보를 기록합니다

2. 페이지 간 변수 전달

3. 본 인터넷 페이지를 쿠키 임시 폴더에 저장하면

더 나은 검색 속도를 얻을 수 있습니다.

创建 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 会话的形式有几种?

unset() $_SESSION=array(); 
session_destroy();

 相关推荐: 

php服务nginx不能使用file_get_contents的解决方法

php输出中文页面时出现中文乱码的解决方案

위 내용은 PHP의 몇 가지 일반적인 문제 요약(컬렉션)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.