php - よく使う関数 - 文字列関連

 クラウディア
1. strpos 文字列の検索
2. explode 文字列の分割
3. str_replace 文字列の置換
4. pathinfo ファイル・パスの情報を取得
5. rtrim, ltrim 空白を削除
6. number_format 3桁区切りの書式

1. strpos 文字列の検索

 文字列の検索を行うには strstr() を使用します。

$結果 = strstr($検索対象の文字列, $検索する文字列);
 文字列が見つからない場合は、false が返ります。  見つかった場合は、文字列が最初に現れた位置から末尾までの文字列を返します。  stristr() にすると大文字小文字を区別しません。  だがしかし、PHP のマニュアルによれば、文字列の有無のみを検索する場合は strpos() の方がメモリ消費が少なく、高速だそうです。  リターン値を考えればわかりますが。

$結果 = strpos($検索対象の文字列, $検索する文字列);
 文字列が見つからない場合は、false が返ります。  見つかった場合は、先頭からの相対位置を 0 始まりで返します。

2. explode 文字列の分割


array $array = explode(string $delimiter, string $string);
 $delimiter に分割する文字をいれて $string を分割します。  動作を分かりやすく見てみます。

/usr/home/hogehoge/lang/php/string/explode.php
 てなファイルを作成して、以下を記述します。  実行すると、下記の結果が得られます。

3. str_replace 文字列の置換

 正規表現を伴わない文字列の置換には str_replace を使います。

$結果 = str_replace(mixed $変換前の文字列, mixed $変換後の文字列 , mixed $変換対象の文字列 [, int &$count ] )
 例えば、次ページ以降に出てくる、「print_r」という関数があって、これは、型に合わせて、出力するのですが・・・。  てなソースを書いて、実行すると
Array
(
    [0] => foo
    [1] => bar
)
 という結果が得られるのですが、これをログに出力すると、やたら改行があって、都合が悪い。  と、「str_replace」をかませて、改行コードを省くと
Array(    [0] => foo    [1] => bar)
 てな出力になります。  この部分、「【PHP】改行コードの削除 - Qiita」を参考にさせていただいたのですが、「PHP_EOL」という変数(定数?)を使うと、環境による改行コードをまるめてくれるそうで、とても都合がよいですね。

4. pathinfo ファイル・パスの情報を取得


$情報 = pathinfo ( string $ファイル・パス文字列 [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] )
 オプションは次の意味を持ちます。
オプション 意味
PATHINFO_DIRNAME ディレクトリ部(末尾の / は取り除かれている)
PATHINFO_BASENAME 拡張子付きのファイル名
PATHINFO_EXTENSION 拡張子
PATHINFO_FILENAME 拡張子を除いたファイル名

5. rtrim, ltrim 空白を削除

 詳細は「PHP マニュアル - 関数リファレンス - テキスト処理 - 文字列 - String 関数」をご参照ください。

rtrim ( string $str [, string $character_mask ] ) : string
ltrim ( string $str [, string $character_mask ] ) : string
 「rtrim」が、末尾の空白を削除、「ltrim」が、先頭の空白を削除します。  「空白を削除」とはいうものの、削除するのはいわゆる「ホワイトスペース」になります。  すなわち
コード 16進 意味
0x20 半角スペース
\t 0x09 タブ
\n 0x0A 改行
\r 0x0D 復帰
\0 0x00 NULL
\x0B 0x0B キャリッジリターン

6. number_format 3桁区切りの書式

 数値を出力しようとするとき、キロ・メガ・ギガの単位で表示させたいときに使います。

string number_format ( float $number [, int $decimals = 0 ] )

string number_format ( float $number , int $decimals = 0 , string $dec_point = "." , string $thousands_sep = "," )
 これを実行すると以下の結果が得られます。
 
 
カウンタバックグラウンド