第4章 文字列
教科書「プログラミングPHP 第2版」
上級試験は、オライリーから出版されているプログラミングPHP 第2版を教科書に出題されます。
変数の展開
- シングルクォートでは、変数が展開されない
- ダブルクォートとヒアドキュメントでは、変数が展開される
- 必要なら波括弧で括る($nthと{$n}th)
- 変数の展開は一段階のみ
エスケープ
- バックスラッシュが特殊な意味を持つ
- シングルクォートでは、\'と\\のみ
- ダブルクォートでは、\", \n(改行), \r(復帰), \t(タブ), \\, \$, \{, \}, \[, \], \0から\777の8進数, \x0から\xFFの16進数
- 存在しないエスケープは無視される(notice)
文字列を出力する
- echo は(if文等に)埋め込み不可, printは埋め込み可
- printfはフォーマットを指定して出力(整数d,浮動小数点数f,文字列s等)
- 日付二桁(一桁は先頭に0)は%02d、小数点二位までは%.2f
- print_rは配列やオブジェクト等を出力する
- var_dumpはタイプと中身を出力する
変換
- trim(ltrim, rtrim)で空白(デフォルトでは空白、タブ、改行、復帰、ヌルバイト、縦タブ)を除去できる
- strtolowerで小文字に変換、strtoupperで大文字に変換
- ucfirstで文字列の先頭のみ大文字、ucwordsで単語の先頭のみ大文字
HTMLエスケープ
- htmlentitiesで特殊文字を変換
- HTMLエスケープは、htmlspecialcharsで、第二引数にENT_QUOTESを指定、第三引数にUTF-8を指定
- HTMLタグを取り除くにはstrip_tags
URL関連
- get_meta_tagsは、HTMLページのmeta tag情報を取得して配列にする
- rawurlencodeで、特殊文字を%数字二桁(ex. %20)に変換する
- urlencodeは、rawurlencode同様特殊文字を%数字二桁に変換するが、半角空白は+に変換する
- rawurlencodeの逆変換はrawurldecode、urlencodeの逆変換はurldecode
- addslashesは、シングルクォート、ダブルクォート、ヌルバイト、バックスラッシュをエスケープする
- addcslashesは、ASCIIコードが32未満か126より大きいものをエスケープする(8進表記)
比較
- ==は、型を区別しない(3と"3"は同じ)
- ===は、型を区別する(3と"3"は異なる)
- 比較対象の片方が数値だと、もう一方も数値に変換して評価する
- 文字列として比較するには、strcmp(大文字小文字を区別する)や、strcasecmp(大文字小文字を区別しない)を使う
- strncmp, strncasecampで文字列の最初の比較ができる
- 自然順比較はstrnatcmp, strnatcasecamp
- 音の類似性をチェックするsoundex, metaphone。スペルの類似性をチェックするsimilar_text, levenshtein。
切り取り
- substr(対象文字列,開始,長さ)。置換はsubstr_replace(対象文字列,新文字列,開始,長さ)。
- strrevは文字列を逆にする。str_repeatは繰り返し。str_padは文字列を固定長にする(空白等を補充する)。
配列
- explode(文字列->配列)。implode(配列->文字列)。implodeはjoinでも良い。
- strtokは、切り出した部分文字列を一個ずつ出力する
- sscanfは、文字列を切り取って配列にする(printfのフォーマットで指定する)
検索
- strposは、指定した文字列が最初に見つかった場所を返す。strrposは、指定した文字列が最後に見つかった場所を返す。先頭だと0を返すので注意する。
- strstr/strchrは、指定した文字列が最初に見つかった場所以降の文字列を返す(stristrは、大文字小文字を区別しない)。strrchrは、指定した文字列が最後に見つかった場所を返す。
- strposは最初に見つかった場所を返す。strrposは最後に見つかった場所を返す。
- strspnは、文字列と文字群を指定し、文字群に含まれる文字数を返す。strcspnは、文字列と文字群を指定し、文字群に含まれない文字数を返す。数字だけかどうか?の判定、不正な文字が含まれていないか?等に用いる。
URL情報を分割
- parse_urlで、url情報を分割して配列にして返す。
※原書を元にしています。日本語訳本とは用語等が異なる可能性があります。
Copyright (C) 2003-2018. PHP で WEB 作成 All rights reserved.