文字列定数のクォート処理
変数の展開
ダブルクォート、ヒアドキュメント内・・・変数は展開される
シングルクォート・・・変数は展開されない
展開する変数を{}で囲むことで、どこからどこまでが変数かを明示できる
ex)
$n = 12;
echo "You are the {$n}th person";
→You are the 12th person
シングルクォートで囲まれた文字列のエスケープシーケンス
シングルクォートで囲まれた文字列内では以下の2つのエスケープシーケンスのみが使用できる。
\ → \
\' → '
ヒアドキュメント
ex)
$a = <<< EndOfQuote
Sir Humphrey Davy
Abominated gravy.
He lived in the odium
Of having discovered sodium.
EndOfQuote;
echo $a;
→
Sir Humphrey Davy
Abominated gravy.
He lived in the odium
Of having discovered sodium.
<<< と識別子(上記ではEndOfQuote)の間には少なくとも一つの空白文字が必要
ヒアドキュメントの後に式が続く場合はヒアドキュメントの後に(;は、なしで)いったん改行を置いた上で式を続ける
ex)
printf(<<<Template
%s is %d years old.
Template
,"Fred", 35)
- ヒアドキュメント内のシングルクォート、ダブルクォート、空白文字はそのまま出力される。
- ヒアドキュメント文字列の最後に改行文字を残したい場合は、空行を余分に追加する必要あり。
文字列の表示
文字列の表示には以下の4通りがある
echo, print, printf, print_rとvar_dump
- echo
- ポイント:echoは関数でないので、式の一部としては使えない ex) if(echo("テスト")){・・・}はNG
- print ex) print("テスト\n");
- printf
- ex) printf(%.2f',27.452); → 27.45
- print_r, var_dump デバッグ等に利用
strlen() → 文字数を返す
ex)
$string = 'Hello,world';
$length = strlen($string) → 12
文字列のお掃除
trim,ltrim(左),rtrim(右)
デフォルトで除去する文字は、空白(" ")、タブ("\t")、改行("\n")、キャリッジリターン("\r")、NULバイト("\0")、垂直タブ("x0B")
第2引数に除去する文字を指定することが可能
ex) trim($record, " \r\n\0\xB")→タブは除去しない
大文字小文字の変換
- strtolower 大文字へ変換
- strtoupper 小文字へ変換
- ucfirst 最初の文字だけ大文字へ変換
- ucwords 単語の最初だけ大文字へ変換
エンコードとエスケープ
HTMLのエンコード、エスケープ
htmlentities() 特殊文字の変換
不等号、&、アクセント記号、ウムラウト付き記号(Ü) を<,&等に変換する
htmlspecialchars() 必要最小限の文字のみを変換。対象は以下。
- & → &
- " → "
- '→ '
- < → <
- > → >
HTMLタグの除去 strip_tags()
string strip_tags ( string $str [, string $allowable_tags = 取り除かないタグ] )
mataタグの抽出 get_meta_tags()
array get_meta_tags ( string $filename [, bool $use_include_path = false ] )
URLのエンコード、エスケープ
- rawurlencode(),rawurldecode() リンクURL用
- urlencode(),urldecode() クエリ文字列作成用
違いは、空白文字の扱い。raw〜関数が空白文字を%20に変換するのに対して、rawがつかない関数はプラス記号(+)に変換。→クエリ文字列やクッキーの方式。したがって、クエリ文字列を作成する場合
SQLのエスケープ
特殊文字の前に\を追加するための関数がaddslashes() 反対がstripslashes()
文字列の比較
== と ===
== キャストして比較
=== キャストせず比較
strcmp() → 数値を文字列にキャストし、文字列として比較
★strcasecmp()は、小文字変換して比較する関数
★strnatcmp(),strnatcasecmp()は自然順(文字列中の数値は数値として比較)で比較する関数
文字列の類似性を調べる関数 soundex(),metaphone(),similar_text(),levenshtein()
文字列の操作と検索
substr() 文字列の一部を取り出す
string substr ( string $string , int $start [, int $length ] )
substr_count() 文字列の中で、特定の文字列が何回登場するか調べる
int substr_count ( string $haystack , string $needle [, int $offset = 0 [, int $length ]] )
substr_replace() 文字列の一部を置換する
mixed substr_replace ( mixed $string , mixed $replacement , mixed $start [, mixed $length ] )
strrev() 逆順にする
str_repeat() 繰り返す
str_pad() ある文字列に別の文字列を継ぎ足す
文字列の分解
explode(),strtok(),sscanf() → reference参照
文字列の検索関数
strpos(),strrpos(),strstr(),stristr(),strchr(),strrchr(),parse_url() → reference参照