PHP5技術者認定試験(上級)
資格試験に向けて勉強中です
勉強していて、PHPについて実は知らなかった/勘違いしていたことを記載します。
文字列
変数の展開
- ダブルクオーテーション
"
で括られた文字列内では変数・エスケープシーケンスが展開される
- 変数展開時は
"my name is {$fullname}desu"
のように波括弧で括るのが無難
- シングルクォーテーション
'
は展開されない
ヒアドキュメント
- 通常のヒアドキュメント
- 書き方を忘れがち
- EOSは 終端ID と呼ばれる
- 終端IDの前後にスペース、コメントなどを記載してはいけない
$string = <<<EOS
6月20日 {$schedule}
EOS;
- Nowdoc (PHP5.3~)
- EOSをシングルクォートで括る
- 変数が展開されない
$string = <<<'EOS'
6月20日 {$schedule}
EOS;
出力
echo, print()
- echo と print() は構造言語
- echo は複数の引数をカンマ
,
区切りで記述できる
-- その場合括弧で括ってはいけない
echo $date, $schedule ;
echo ( $date, $schedule ) ; // これはエラー
- print() は出力に成功した場合
true
を返す
print_r(), var_dump
- var_dump
-
,
で区切って複数の値を出力できる
- 自分自身の参照を含むオブジェクト(
$GLOBALS
など )も出力可能
操作
trim( $str
[ $charlist
] ), ltrim( $str
[ $charlist
] ), rtrim( $str
[ $charlist
] )
- 2パラ
$charlist
は string
- デフォルトの除去文字は以下
- 空白, タブ, 改行, キャリッジリターン, NULLバイト, 垂直タブ
他の操作関数
関数名 |
機能 |
strtolower( $str ) |
小文字変換 |
strtoupper( $str ) |
大文字変換 |
ucfirst( $str ) |
先頭を大文字変換 |
ucwords( $str ) |
各単語の先頭を大文字変換 |
substr( $str , $start ,[ $length ] ) |
文字を抜き出す |
substr_count( $heystack , $needle ) |
needleキーワードが何回出現するか |
substr_replace( $str1 , $str2 , $index , $len ) |
$str1 の $index 位置から $len 分の文字を$str2 に置換 |
strrev( $str ) |
逆から読む |
str_repeat( $str , $cnt ) |
$str を $cnt 回繰り返した文字列を取得 |
str_pad( $str , $len , $pad = " " ) |
$str が $len 文字に達するまで、右に $padを付加
|
エンティティ
エンティティ変換
- HTMLで意味を持つ文字をエスケープすることを エンティティ といいます。
関数名 |
機能 |
comment |
htmlentities( $str ) |
HTML特殊文字・ほか一部を、エンティティに変換 |
よくタイポされる |
htmlspecialchars( $str ) |
HTML特殊文字を、エンティティに変換 |
上とほぼ同機能の関数 |
他の操作関数
関数名 |
機能 |
strip_tags( $str ) |
HTMLタグ・コメント、PHPタグを取り除く |
get_meta_tags( $filename ) |
対処ファイルのHTMLメタタグを連想配列で取得 |
エンコード・エスケープ
関数名 |
機能 |
urlencode( $str ) |
URLエンコード(クエリ文字列・クッキー値形式) |
urldecode( $str ) |
上記をデコード |
rawurlencode( $str ) |
URLエンコード(RFC3986形式) |
rawurldecode( $str ) |
上記をデコード |
addslashes( $str ) |
SQL用のエンコード 使うべきではない
|
stripslashes( $str ) |
上記をデコード |
- addslashes()は 殆どのRDBMSで不向き。RDBMSに合わせたエスケープをしよう!
比較
-
==
, ===
どちらも 大文字小文字の区別を行う
-
<
や <=
演算子での比較は、辞書順での比較を行う
関数名 |
機能 |
strcmp( $str1 , $str2 ) |
辞書順で比較 |
strnatcmp( $str1 , $str2 ) |
自然順で比較 |
分解・結合
関数名 |
機能 |
explode( $demiliter , $str ) |
区切り文字で分割した配列を取得 |
implode( $glue ,(array) $pieces ) |
複数の文字列を結合 |
join( $glue ,(array) $pieces ) |
implodeのエイリアス |
strtok( $str , $token ) |
$token で区切ったトークンを取得 、見つからない→ false
|
sscanf( $str , $format ) |
フォーマットに応じた値を読み取り、戻り値は配列 |
parce_url( $url ) |
URLを分割、戻り値は ["scheme"=>"http", "host"=>"qiita.com", "path" => "/mypage"]
|
検索
関数名 |
機能 |
strpos( $str , $keyword ) |
検索文字列が最初に現れる位置を返す、見つからない→ false
|
strrpos( $str , $keyword ) |
検索文字列が最後に現れる位置を返す、見つからない→ false
|
strstr( $str , $keyword ) |
検索文字列から末尾までの文字列を返す |
strchr( $str , $keyword ) |
検索文字列から末尾までの文字列を返す(上と同じ) |
stristr( $str , $keyword ) |
検索文字列から末尾までの文字列を返す(大文字小文字を無視(i)) |
strrstr( $str , $keyword ) |
検索文字列が最後に現れる位置から末尾までの文字列を返す |
strspn( $str , $mask ) |
$mask の文字のみで構成される部分が何文字あるか |
strcspn( $str , $mask ) |
$mask の以外文字のみで構成される部分が何文字あるか |
終わりに
PHPよ、文字列関数の命名規則はどうにかならんかったのか
いいね!してくれると勉強が捗ります