PHP入门(PHP的基本内置函数)
这是什么?
PHP+MySQLマスターブックの学習記録です。
Contents
-
- PHP的基础知识
-
- PHP内置函数的基本知识
-
- PHP在Web中的应用
-
- 类和对象
-
- 准备数据库
-
- 数据操作的基本知识
-
- 从PHP操作数据库
-
- 管理数据库
- PHP的应用领域
前提
- PHP version 5.4
文字字符串操作
处理输入数据
strlen / mb_strlen -> 字符串长度 / 多字节字符串长度
- 文字列バイト数を得る
$変数 = strlen(文字列);
$str = "Hello!";
$length = strlen($str);
$mb_length = mb_strlen($str);
echo $length . "\n";
echo $mb_length . "\n";
// 日本語として何文字かカウントしたい場合はmb_strlen関数を使用する。
18
6
取子字符串
- 文字列を分割する
$変数 = substr(文字列, 文字列の位置, 文字列の長さ);
// 文字列の位置は先頭の文字が「0」番目
$string = "ACDEFGHIJKLMN";
$result = substr($string, 3, 5);
echo $result;
DEFGH
替换字符串
- 文字列を置換する
$変数 = str_replace(置換対象文字, 置換文字, 文字列);
$html = '<font size="3">Hello!</font><br>';
$search = 'size=3';
$replace = 'size=5';
$result = str_replace($search, $replace, $html);
echo $result;
<font size="5">Hello!</font><br>
修剪
- スペースを除去する
$変数 = trim(文字列);
$string = " 1234567890 ";
$result = trim($string);
echo $result;
1234567890
将HTML显示
htmlspecialchars -> HTML实体编码
- HTMLタグを無効にする
$変数 = htmlspecialchars(文字列, オプション);
// CSRF対策
$string = '<a href="http://google.com">Google</a>';
$result = htmlspecialchars($string, ENT_QUOTES);
echo $result;
<a href="http://google.com">Google</a>
strip_tags 去除标签
- HTMLタグを取り除く
$変数 = strip_tags(文字列, 許可するタグ);
$string = `<a href="http://google.com">Google</a>`;
$result = strip_tags($string);
echo $result;
Google
把以下内容用中文进行本地化改写,只需要一种选项:
nl2br
- 改行コードの前に改行タグを付ける
$変数 = nl2br(文字列);
$string = "PHPの関数は
とても便利
ですね。";
$result = nl2br($string);
echo $result;
PHPの関数は<br/>
とても便利<br/>
ですね。
使用数组进行字符串处理
爆炸
- 配列から文字列を作成する
$変数 = implode(区切り文字, 配列);
$data = array("A", "B", "C", "D");
$result = implode(',', $data);
echo $result;
A,B,C,D
爆炸
- 文字列から配列を作成する
$変数 = explode(区切り文字, 文字列);
$string = "A, B, C, D";
$array = explode(',', $string);
print_r($array);
Array
(
[0] => A
[1] => B
[2] => C
[3] => D
)
对要传递给数据库的字符串进行处理
转义斜杠
- エラーになる文字をエスケープする
在Web应用程序中,有时会使用通过提交表单发送的数据来搜索数据库。然而,如果这些数据中包含对于SQL语句来说具有意义的字符,就会导致错误并停止处理。使用addslashes函数可以对有错误的字符串进行转义,使其在SQL中不起作用。
$変数 = addslashes(文字列);
$string = "A", "B", "C", "D";
$result = addslashes($string);
print $result;
\"A\", \"B\", \"C\", \"D\"
对数组进行操作
将数组数据存储到变量中。
列表
- 配列のデータをすべて変数に格納する
list($変数1, $変数2, $変数3) = $配列;
$data = array("A", "B", "C");
list($a0, $b1, $c2) = $data;
// このような状態となる
$a0 = $data[0];
$b1 = $data[1];
$c2 = $data[2];
数组内数据的排序
指定标志进行排序的标志列表。
分类
- 昇順にソートする
sort($配列, フラグ);
$numbers = array(18,7,20,5);
sort($numbers);
print_r($numbers);
Array
(
[0] => 5
[1] => 7
[2] => 18
[3] => 20
)
逆序排序
- 降順にソートする
rsort($配列, フラグ);
$numbers = array(18,7,20,5);
rsort($numbers);
print_r($numbers);
Array
(
[0] => 20
[1] => 18
[2] => 7
[3] => 5
)
对列表中的数据进行排序
分类
- データを昇順にソートする
asort($配列, フラグ);
$sales = array("TV2" => "1000", "TV1" => "500", "RADIO1" => "800");
asort($sales);
print_r($sales);
Array
(
[TV1] => 500
[RADIO1] => 800
[V2] => 1000
)
按照降序排列
- データを降順にソートする
arsort($配列, フラグ);
$sales = array("TV2" => "1000", "TV1" => "500", "RADIO1" => "800");
arsort($sales);
print_r($sales);
Array
(
[V2] => 1000
[RADIO1] => 800
[TV1] => 500
)
排序
- キーを昇順にソートする
ksort($配列, フラグ);
$sales = array("TV2" => "1000", "TV1" => "500", "RADIO1" => "800");
ksort($sales);
print_r($sales);
Array
(
[RADIO1] => 800
[TV1] => 500
[V2] => 1000
)
krsort (按照键值降序排序)
- キーを降順にソートする
krsort($配列, フラグ);
$sales = array("TV2" => "1000", "TV1" => "500", "RADIO1" => "800");
krsort($sales);
print_r($sales);
Array
(
[V2] => 1000
[TV1] => 500
[RADIO1] => 800
)
添加或删除数组末尾的数据
array_push
array_push (将一个或多个元素添加到数组末尾)
- 末尾にデータを追加する
array_push($配列, "追加文字列");
array_push($配列, $追加変数);
$data = array("A", "B", "C");
array_push($data, "D", "E");
print_r($data);
Array
(
[0] => A
[1] => B
[2] => C
[3] => D
[4] => E
)
array_pop取出数组中的最后一个元素并将其删除。
- 末尾のデータを削除する
$変数 = array_pop(配列);
$data = array("A", "B", "C");
$c = array_pop($data);
print_r($data);
print $c;
Array
(
[0] => A
[1] => B
)
C
添加/删除数组的首个数据
array_unshift
请将元素添加到数组的开头
- 先頭のデータを追加する
array_unshift($配列, "追加文字列");
array_unshift($配列, $追加変数);
$data = array("A", "B", "C");
array_unshift($data, "X", "Y");
print_r($data);
Array
(
[0] => X
[1] => Y
[2] => A
[3] => B
[4] => C
)
array_shift 数组的移出操作
- 先頭のデータを削除する
$変数 = array_shift(配列);
$data = array("A", "B", "C");
$a = array_shift($data);
print_r($data);
print $a;
Array
(
[0] => B
[1] => C
)
A
数组的合并和切片
合并数组
- 配列をマージする
使用数组合并运算符“+”可以将数组进行合并,但其操作方式有所不同。
array_merge函数会重新分配索引,从0开始编号,
而“+”运算符会保持索引不变。
此外,当进行合并时,如果存在相同的键或索引,array_merge函数会以后面指定的数组为准进行覆盖,
而通过运算符进行合并时则不会被覆盖。
$配列 = array_merge($元の配列,$追加配列);
$data = array("TV1" => "500", "TV2" => "1000", "RADIO1" => "800");
$add_data = array("TV1" => "2000", "RADIO2" => "600");
$result = array_merge($data, $add_data);
print_r($result);
Array
(
[TV1] => 2000
[TV2] => 1000
[RADIO1] => 800
[RADIO2] => 600
)
* 切片函数:切取数组
$配列 = array_slice($元の配列, 開始位置, 長さ);
$data = array("A", "B", "C", "D", "E");
print implode(',', $data) . "\n";
// A,B,C,Dを取り出す
$result = array_slice($data, 0, 4);
print implode(',', $result) . "\n";
// Cを取り出す
$result = array_slice($result, -3, 1);
print implode(',', $result) . "\n";
// Dを取り出す
$result = array_slice($data, 3, -1);
print implode(',', $result) . "\n";
//C,D,Eを取り出す
$result = array_slice($data, 2);
print implode(',', $result) . "\n";
A,B,C,D,E
A,B,C,D
C
D
C,D,E
其他函数
数组反转
- データを反転する
$配列 = array_reverse($元の配列);
$data = array("A", "B", "C", "D", "E");
$result = array_reverse($data);
print_r($result);
Array
(
[0] => E
[1] => D
[2] => C
[3] => B
[4] => A
)
日期和时间
获取当前日期和时间
时间
- UNIXのタイムスタンプを表示する
$変数 = time();
$now = time();
print $now;
1447958527
转换成本地时间
- 日付をUNIXのタイムスタンプとして取得する
$変数 = mktime(時間, 分, 秒, 月, 年,);
$timestamp = mktime(0, 0, 0, 20, 11, 2015);
print $timestamp;
日期
- UNIXタイムスタンプを日付にする
$変数 = date(フォーマット, UNIXタイムスタンプ);
$timestamp = time() + (60 * 60 * 24) * 7;
$next_week = date('Y年m月d日H時i分s秒', $timestamp);
print $next_week;
2015年11月20日 4時09分17秒
- フォーマット用記号
日期检查
检查日期
- 日付の妥当性をチェックする
如果日期正确,则返回TRUE,如果日期不正确,则返回FALSE。
$変数 = checkdate(月, 日, 年);
$month = 11;
$day = 20;
$year = 2015;
if(!checkdate($month, $date, $year)){
print "正しい日付を入力して下さい"
}
对文件进行操作
文件的读写
读取文件内容
- ファイルを読み込む
如果想要将读取的文件内容按行存入”数组”,可以使用file函数。使用方法与file_get_contents函数相同。
$変数 = file_get_contents("ファイル名またはURL");
$filename = "test.txt";
if(is_readable($filename)){
$contents = file_get_contents($filename);
print $contents;
} else {
print $filename . "は読み込めません。";
}
将内容写入文件
- ファイルにデータを書き込む
当文件不存在时,它会被创建,如果存在,则会被覆盖。
file_put_contents("ファイル名", $変数);
$filename = "test.txt";
$contents = "abcdefghijklmn";
file_put_contents($filename, $contents);
mb_convert_encoding – mb转换编码
- 文字コードを変換する
$変数 = mb_convert_encoding($変数, "変更する文字コード", "元の文字コード");
$filename = "test.txt";
$contents = "あいうえおかきくけこ";
$contents = mb_convert_encoding($contents, "SJIS", "UTF-8");
file_put_contents($filename, $contents);
打开文件 / 读取 / 写入 / 关闭
- ファイルポインタを利用してテキストファイルをプログラムで読み込む
与file_get_contents和file_put_contents不同的地方是使用文件指针,并且可以处理图像文件等二进制文件。
$ファイルポインタ = fopen("ファイル名またはURL", "オプション");
fwrite($ファイルポインタ, "書き込みデータ");
fclose($ファイルポインタ);
文件操作
取消链接 (cancellation of link)
- ファイルを削除する
$変数 = unlink("ファイル名");
$filename = "test.txt";
// is_file関数でファイル存在確認
if(is_files($filename) && unlink($filename)){
print $filename . "を削除しました。";
} else {
print $filename . "は削除できませんでいした。";
}
复制
- ファイルをコピーする
如果复制目标文件已经存在的情况下,将会被覆盖,请注意。
copy(コピー元ファイル名, コピー先ファイル名);
if(copy("test.txt", "test.bak")){
print "コピーに成功しました。";
} else {
print "コピーできませんでした。";
}
操作目录
创建目录
- ディレクトリを作成する
模式是指目录的权限。
省略时,默认设置为0777。
$変数 = mkdir("パス名", モード);
$dirname = "temp";
// is_dir関数でディレクトリ存在確認
if(!is_dir($dirname) && mkdir($dirname)){
print $dirname . "を作成しました。";
} else {
print $dirname . "は作成できませんでした。";
}
删除目录
- ディレクトリを削除する
rmdir(ディレクトリ名);
rmdir("temp");
HTTP头部
操作HTTP头部
标题
- レスポンスヘッダ―を送信する
有时,在响应头中,可能需要输出特殊的头信息以使CSV格式文件能够下载。
header("レスポンスヘッダ―");
<?php
$downloadfile = "data.csv";
header("Content-Disposition: attachment; file");
header("Content-type: application/octet-stream; name=$downloadfile");
$result = file_get_contents("test.data");
print $result;
重定向
地点
如果将URL作为响应头中的Location字段发送给浏览器,就可以实现重定向。
指定的URL必须是绝对路径。
header("Location: http://google.com/");
exit;
发送电子邮件
发送电子邮件
mb_send_mail 发送邮件
- メールを送信する
mb_send_mail(宛先, 件名, 本文, 追加のヘッダー);
$to = "hoge@gmail.com";
$subject = "test";
$message = "hello world";
$add_header = "From:hogehoge@gmail.com\r\nCc:hogehogehoge@gmail.com";
if(mb_send_mail($to, $subject, $message, $add_header)){
print "メールを送信しました。";
} else {
print "メール送信に失敗しました。";
}
正则表达式
使用正则表达式
preg_match 正则匹配
- 正規表現を使用する
preg_match(正規表現パターン, 文字列);
– 使用if语句
$number = "123456";
if(preg_match("/[0-9]+/", $number)){
print "数字です";
} else {
print "数字以外の文字です";
}
当需要引用匹配的字符串时,需要用括号将正则表达式括起来,例如”/([0-9]+)/”。若在第三个参数中指定数组$matches,则:
$matches[0]存储整个字符串
$matches[1]存储第一个匹配的字符串
$matches[2]存储第二个匹配的字符串
$number = "123456";
if(preg_match("/([0-9][0-9])([0-9]+)/", $number, $matches)){
// 123456が格納される
print $matches[0];
// 12が格納される
print $matches[1];
// 3456が格納される
print $matches[2];
}
preg_replace / ereg_replace / mb_ereg_replace: 替换字符串中的文本字符/替换字符串中的正则表达式匹配项/ 替换字符串中的Unicode字符的正则表达式匹配项
- 正規表現を使った置換処理
$変数 = preg_replace(正規表現, 置換後の文字, 置換対象文字列);
$変数 = ereg_replace(正規表現, 置換後の文字, 置換対象文字列);
$変数 = mb_ereg_replace(正規表現, 置換後の文字, 置換対象文字列);
preg_replace函数是以Perl格式指定正则表达式时指定为”/正则表达式/”。
ereg_replace函数不需要”//”。
mb_ereg_replace函数是将ereg_replace函数改为处理多字节字符的版本。
尾注
我想要努力完成所有章节。