ホームページ > バックエンド開発 > PHPチュートリアル > PHP でよくある問題のまとめ (コレクション)

PHP でよくある問題のまとめ (コレクション)

不言
リリース: 2023-04-04 06:40:02
オリジナル
1864 人が閲覧しました

この記事の内容は、PHP でよくある問題をまとめたものです。一定の参考価値があります。困っている友人は参考にしてください。お役に立てれば幸いです。

1. 文字列を定義するときの一重引用符と二重引用符の違いは何ですか?

一重引用符は二重引用符よりも速く読み込まれます

2. echo()、print()、print_r() の違いは何ですか?

(1) echo は構文です。1 つ以上の文字列を出力します。戻り値はありません。
(2) print は関数です。配列やオブジェクトは出力できません。Outputastring、print
戻り値がある;
(3)print_rは配列を出力できる関数です。 print_r は興味深い関数です。文字列、int、float、配列、オブジェクトなどを出力できます。配列を出力する場合、構造体で表されます。出力が成功すると print_r は true を返します。print_r には print_r($ を渡すことができます) str,true) なので、print_r print_r で処理した値を出力せずに返します。なお、echoとprintについては、printよりも効率がよいため、基本的にはechoを使用します。

3. 機能分類による文字列処理関数とは何ですか?これらの機能は何をするのでしょうか?

A. 文字列出力関数
(1)ech​​o $a,$b,$c...; は言語構造であり、実際の
関数ではありません。
(2)print($a) この関数は文字列を出力します。成功した場合は 1 を返し、失敗した場合は 0
(3)print_r($a)
(4)var_dump($a); 型、長さ、値を出力できます
B。文字列の先頭と末尾 機能:trim ltrim rtrim (別名:chop) 2 番目のパラメータを使用すると、指定した文字を削除することもできます。
C. 文字列エスケープ関数:addslashes()
D.文字列長取得関数:strlen()
E.文字列長インターセプト関数:substr()
F.文字列取得関数:strstr() 、strpos()
G. 文字列置換関数: str_replace()

4. 次の質問に正しく答えてください。

1).$arr = array('james', 'tom', 'symfony'); $arr 配列の値を ',' で分割し、次のようにマージしてください。文字列出力?

echo implode(‘,’,$arr);
ログイン後にコピー

2).$str = 'jack,james,tom,symfony'; $str を ',' で分割し、分割した値を $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. まず、現在のページが文字化けしているかどうかを検討してください。ファイルには文字セット set があります。メタタグにcharsetが記述されているかどうかを確認します。phpページの場合は、header()関数に
charsetが指定されているかどうかも確認できます。
例:

<meta http-equiv="Content-Type" content="text/html;
charset=utf-8"/>
header(“content-type:text/html;charset=utf-8”);
ログイン後にコピー

2. 文字セット (つまり、charset) が設定されている場合は、現在のファイル
に保存されているエンコード形式が、ページに設定されている文字セットと一致しているかどうかを確認します。この 2 つは一貫している必要があります。
3. データベースからデータを抽出する必要がある場合は、データベースにクエリを実行するときの
文字セットが現在のページの文字セット セットと一致しているかどうかを確認します。この 2 つは統合されている必要があります。 、 ###例えば: ######

mysql_query(“set names utf8”)。
ログイン後にコピー

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 时间戳?

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 传值的时候,若中文出现乱码,应该用哪个函数对中文进行编码?

用户在网站表单提交数据的时候,为了防止脚本攻击(比如 用户输入<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

$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. Cookieを使用する際の注意点は何ですか?

#1) setcookie() の前にページを出力することはできず、スペースや空の

白行も許可されません。 # 2) setcookie() の後、現在のページで $_COOKIE['cookiename'] を呼び出しても出力はありません。cookie 値を確認するには、更新するか次のページに移動する必要があります。
3) ブラウザーによって Cookie の処理方法が異なります。クライアントは Cookie を無効にすることができ、ブラウザーは Cookie の数をアイドル状態にすることもできます。ブラウザーは最大 300 個の Cookie を作成でき、各 Cookie は 4kb を超えることはできません。各 Web サイトで設定できる Cookie の総数は 20 を超えることはできません。
4) Cookie はクライアント側に保存されるため、ユーザーが Cookie を無効にすると、setcookie は機能しなくなります。したがって、Cookie にあまり依存しないでください。
21. セッションを使用する場合、現在のユーザーを他のユーザーと区別するために何を使用しますか?

sessionid、現在の session_id は session_id() 関数を通じて取得できます。

22. セッションと Cookie を使用する手順は何ですか?セッションとCookieのライフサイクルは何ですか?セッションとクッキーの違いは何ですか?

1. Cookie はクライアント マシンに保存されます。有効期限が設定されていない Cookie の場合、Cookie の値はマシンのメモリに保存されます。ブラウザが閉じている限り、クッキーは自動的に消えます。 Cookie の有効期限が設定されている場合、ブラウザは Cookie をテキスト ファイルの形式でハード ディスクに保存し、ブラウザを再度開いたときも Cookie の値は有効です。

2. セッションとは、ユーザーが保存する必要がある情報をサーバー側に保存することです。各ユーザーのセッション情報は、キーと値のペアのようにサーバー側に保存されます。キーはセッション ID、値はユーザーが保存する必要がある情報です。サーバーは、保存されたセッション情報がどのユーザーに属しているかを識別するために sessionid を使用します。

この 2 つの最大の違いは、セッションはサーバー側に保存されるのに対し、Cookie はクライアント側に保存されることです。セッションのセキュリティは高くなりますが、Cookie のセキュリティは弱いです。
3. セッションは Web 開発において非常に重要な役割を果たします。ユーザー の正しいログイン情報をサーバーのメモリに記録できます。ユーザー
がこの ID で Web サイトの管理バックエンドにアクセスすると、ログを記録せずに ID 確認を取得できます。また入って。正しくログインしていないユーザーはセッション領域が割り当てられず、管理背景のアクセスアドレスを入力してもページの内容を閲覧することができません。ページに対するユーザーの操作権限はセッションを通じて決定されます。
セッションを使用する手順: 1. セッションの開始: session_start() 関数を使用して開始します。

2. セッションの登録: $_SESSION 配列に要素を直接追加するだけです。

3. セッションを使用する: セッションが空であるか登録されているかを確認します。

がすでに存在する場合は、通常の配列と同様に使用します。
4. セッションの削除:
1. unset を使用して 1 つのセッションを削除できます; 2. $_SESSION= を使用します。 array() メソッド、すべてのセッション変数を一度にログアウト;
3. session_destroy() 関数を使用してセッションを完全に破棄します。
Cookie の使用方法?
1. ユーザーが訪問した情報の一部を記録します
2. ページ間で変数を渡します

3. インターネットページは一時フォルダーの Cookie に保存されるため、 将来の閲覧速度が向上します。

创建 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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート