php技能考试每日一练

时间:2023-11-11 23:53:44

PHP技術者認定

1,

【日本語文字のメール送信】 (2016年10月31日)
以下のコードは桃家タローさん宛てにメールを送るためのものである。コード内の[(1)]に入る正しいものを1つ次の記述の中から選択せよ。
ただし、PHPの言語設定や内部文字エンコーディングは環境に合わせて日本語で適切に動作するよう設定されているものとする。
<?php
$name = "桃家タロー";
$to = [(1)]($name) . "<php-taro@example.jp>";
$subject = "ご挨拶";
$message = "はじめまして、$name さん";
mb_send_mail($to, $subject, $message);
?>
1. iconv_substr
2. mb_convert_encoding
3. base64_encode
4. mb_encode_mimeheader
5. mb_ereg_replace

2,【日本語文字コードのエンコーディング変換】(2016年10月28日)

日本語文字コードのエンコーディング変換を行うために、正しいステートメントを1つ次の記述の中から選択せよ。
ただし、内部エンコーディングの文字列が代入された変数 $text をシフトJISで標準出力するものとする。

1. print mb_convert_encoding($text, 'SJIS');
2. print mb_detect_encoding($text, 'SJIS');
3. print mb_replace_encoding($text, 'SJIS');
4. print mb_substring($text, 'SJIS');
5. print mb_ereg_replace($text, 'SJIS');

3,問題 (2016年10月27日)
【オブジェクトの作成】
PHPで新しいオブジェクトの作成について、誤っているものを1つ次の記述の中から選択せよ。ただし、PHPの設定はデフォルト設定とする。
1. PHP5では $obj = & new MyClass; のように&オペレータを利用しても実質的に $obj = new MyClass; と変わらない。
2. PHPで新しいオブジェクトインスタンスの作成を行う際は、new 演算子を使用する。
3. 既存のオブジェクトからコピーを作成するにはclone演算子を使用する。
4. PHP5でも=(代入)演算子を用いてオブジェクトのコピーが作成できる。

4,問題 (2016年10月26日)

【オブジェクトの基本】
PHPのオブジェクトに関して、誤っているものを1つ次の記述の中から選択せよ。
1. クラスは、ある種のオブジェクトの変数と関数を記述するテンプレート(template :模板)または設計図のようなもので、 class で定義する。
2. メソッド(method :方法)はクラスの中で定義された関数のことで、method で定義する。
3. クラスの中で定義された変数のことをプロパティ(property:属性)と呼ぶ。
4. インスタンス(instance:实例)とはクラス定義から実体化されたオブジェクトの事でメソッドを使ってプロパティを操作できる。

5,【デバッグ作業について】(20161025)

デバッグの際に、ファイルが呼び出されたことを確認するため、そのファイルの先頭に一時的に追加することで、ファイル名を表示して処理を終わらせるのに有効なステートメント(【英】statement ;声明)を1つ次の記述の中から選択せよ。
1. print("Stop in: ". File()) ;
2. echo "Stop in: __FILE__");
3. die ("Stop in: " . __FILE__ );
4. die ("Stop in: " . File() );

6,【例外とエラー】 (2016年10月24日)

例外とエラーについて、正しいものを1つ次の記述の中から選択せよ。
1. 例外処理とエラー処理は同じエラー処理機構で組み合わせて利用する。
2. デフォルトの例外処理を置き換える事はできない。
3. エラー処理はユーザ定義のエラー処理に置き換える事ができる。
4. PHPの例外はネストすることが出来ない。

回答:

1,正解4

解説:1),iconv_substr(str ,offset, length, charset):iconv_substr() 截取字符串的部分
参数 charset 规定字符集
eg:echo iconv_substr($str,0,3),'<br/>';
echo iconv_substr($str,0,3,'utf-8');
2),mb_convert_encoding — 转换字符的编码
string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding = mb_internal_encoding() ] )
将 string 类型 str 的字符编码从可选的 from_encoding 转换到 to_encoding。
eg:
/* 转换内部编码为 SJIS */
$str = mb_convert_encoding($str, "SJIS");
/* 将 EUC-JP 转换成 UTF-7 */
$str = mb_convert_encoding($str, "UTF-7", "EUC-JP");
/* 从 JIS, eucjp-win, sjis-win 中自动检测编码,并转换 str 到 UCS-2LE */
$str = mb_convert_encoding($str, "UCS-2LE", "JIS, eucjp-win, sjis-win");
/* "auto" 扩展成 "ASCII,JIS,UTF-8,EUC-JP,SJIS" */
$str = mb_convert_encoding($str, "EUC-JP", "auto");
3)
string base64_encode ( string $data )
使用 base64 对 data 进行编码。
设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。
Base64-encoded 数据要比原始数据多占用 33% 左右的空间。
eg:
<?php
$str = 'This is an encoded string';
echo base64_encode($str);
?>->
以上例程会输出:
VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==

4)正解mb_send_mail()関数は、件名($subject)と本文($body)は自動的に適切な文字エンコーディング(ISO-2022-JP)に変換するが、宛先($to)やヘッダー(第4引数)は変換しない。このため、mb_encode_mimeheader()関数にてMIMEヘッダーエンコードを行う必要がある。

5)正则表达式替换函数,看例子

Exemple with preg_replace :

<?php $data = preg_replace("/[^A-Za-z0-9\.\-]/","",$data); ?> 
Exemple with mb_ereg_replace : 
<?php $data = mb_ereg_replace("[^A-Za-z0-9\.\-]","",$data); ?>

2,正解:1

mbstring拡張モジュールに含まれる、mb_convert_encoding()関数がマルチバイトに対応した文字コードのエンコーディング変換を行う。
ここでは、元の文字コードのエンコーディングはデフォルトの自動判別にしてあるが、実際には正しいエンコーディングを明示することが望ましい。

3正解:4

4)PHP5では=(代入演算子)でオブジェクトのコピーは作成できない。古いPHP5ではphp.iniの設定でPHP4と同じように=演算子でオブジェクトのコピーが作成されるオプションがあったが、デフォルト設定ではオブジェクトのハンドルがコピーされオブジェクトはコピーされない。

1) PHP5以降のPHPではオブジェクトがハンドルで扱われる。オブジェクト変数の参照を&オペレータで代入しても、オブジェクトをそのまま代入しても、結果的に同じオブジェクトを参照する。
2) new演算子は新しいオブジェクトを作成する。
3) clone演算子は既存のオブジェクトからコピーを作成する。

4,

○ 2. 正解です!
解説:
クラスの中のメソッドを定義するための関数を記述する場合も function を使う。

5,

注释:

PHP手册:die()Equivalent to exit()。
die()和exit()都是中止脚本执行函数;其实exit和die这两个名字指向的是同一个函数,die()是exit()函数的别名。该函数只接受一个参数,可以是一个程序返回的数值或是一个字符串,也可以不输入参数,结果没有返回值。
参考:虽然两者相同,但通常使用中也有细微的选择性。例如:
当传递给exit和die函数的值为0时,意味着提前终止脚本的执行,通常用exit()这个名字。
echo "1111"; 
exit(0);
当程序出错时,可以给它传递一个字符串,它会原样输出在系统终端上,通常使用die()这个名字。
$fp=fopen("./readme.txt","r") or die("不能打开该文件");

__FILE__:常量(路径)

dirname(__FILE___) 函数返回的是脚本所在在的路径

故选3

6,

解説:3)

3) set_error_handler関数でユーザ定義エラーハンドラに置き換える事ができる。
1) 例外処理とエラー処理は別の機能である。
2) デフォルトの例外処理はset_exception_handler関数でユーザ定義例外ハンドラに置き換えることができる。
4) PHP 5.3から例外はネストすることができる。