- 1. strpos 文字列の検索
- 2. explode 文字列の分割
- 3. str_replace 文字列の置換
- 4. pathinfo ファイル・パスの情報を取得
- 5. rtrim, ltrim 空白を削除
- 6. number_format 3桁区切りの書式
- 7. preg_split 正規表現で文字列を分割
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
てなファイルを作成して、以下を記述します。
<?php
$file = __FILE__;
$split = explode('/', $file);
foreach ($split as $value)
{
print $value."\n";
}
?>
実行すると、下記の結果が得られます。
usr
home
hogehoge
lang
php
string
explode.php
3. str_replace 文字列の置換
正規表現を伴わない文字列の置換には str_replace を使います。
$結果 = str_replace(mixed $変換前の文字列, mixed $変換後の文字列 , mixed $変換対象の文字列 [, int &$count ] )
例えば、次ページ以降に出てくる、「print_r」という関数があって、これは、型に合わせて、出力するのですが・・・。
<?php
$array = array('foo', 'bar');
print_r($array);
?>
てなソースを書いて、実行すると
Array
(
[0] => foo
[1] => bar
)
という結果が得られるのですが、これをログに出力すると、やたら改行があって、都合が悪い。
<?php
$array = array('foo', 'bar');
print(str_replace(PHP_EOL, '', print_r($array, TRUE)));
?>
と、「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 = "," )
<?php
$kiro = 1000;
$mega = 1000000;
$giga = 1000000000;
print('$kiro = ['.number_format($kiro)."]\n");
print('$mega = ['.number_format($mega)."]\n");
print('$giga = ['.number_format($giga)."]\n");
?>
これを実行すると以下の結果が得られます。
$kiro = [1,000]
$mega = [1,000,000]
$giga = [1,000,000,000]
7. preg_split 正規表現で文字列を分割
preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] ) : array
「.csv」や、引数の解釈では、わたしはこちらを多用します。
「PHP: preg_split - Manual」に、カンマとホワイトスペースで分割する例があって、そのまま使っています。
こう、書いてありますな。
<?php
// カンマまたは " ", \r, \t, \n , \f などの空白文字で句を分割する。
$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
print_r($keywords);
?>
|