LoginSignup
0
0

More than 5 years have passed since last update.

プログラミングPHP 4章 文字列

Last updated at Posted at 2017-12-13

文字列定数のクォート処理

変数の展開

ダブルクォート、ヒアドキュメント内・・・変数は展開される
シングルクォート・・・変数は展開されない

展開する変数を{}で囲むことで、どこからどこまでが変数かを明示できる
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() 特殊文字の変換

不等号、&、アクセント記号、ウムラウト付き記号(Ü) を&lt,&amp等に変換する

htmlspecialchars() 必要最小限の文字のみを変換。対象は以下。

  • & → &amp
  • " → &quot
  • '→ &#039
  • < → &lt
  • > → &gt

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参照

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0