php 文字列絡みの関数

2011/04/20
細かい書式は他で調べて欲しい。あくまで早見表的な扱い。

含まれている個数

substr_count(str, find)
[str]内の[find]をカウント
substr_count(str, find, n)
[str]内の最初の[n]文字を削除して残りの[find]以降を対象にカウント
「substr_count('abc@def@ghi', '@', 2)」だったら最初の2文字を削除した「c@def@ghi」を対象にカウントする

substr_count(str, find, n, m)
[str]内の最初の[n]文字を削除した残りから[m]文字分を対象にカウント
「substr_count('abc@def@ghi', '@', 2, 4)」だったら最初の2文字を削除して残った「c@def@ghi」から最初の4文字の「c@def」を対象にカウント

マルチバイト:日本語OK

mb_substr_count(str, find)
[str]内の[find]をカウント
「ini_set("mbstring.internal_encoding", "utf8");」が必要な場合もある。
※substr_count()のように「最初の2文字を削除」とかはできないっぽい

文字数の調査

strlen(str)
[str]の文字数(nバイトしてカウント)→全角文字があると変。

マルチバイト:日本語OK

mb_strlen(str)
[str]の文字数(n文字してカウント)
「ini_set("mbstring.internal_encoding", "utf8");」が必要な場合もある。

出現位置の調査

strpos(str, find)
[str]に[find]が出現する位置を調査(nバイト目として調査)→全角文字があると変。

マルチバイト:日本語OK

mb_strpos(str, find)
[str]に[find]が出現する位置を調査(n文字目として調査)
「ini_set("mbstring.internal_encoding", "utf8");」が必要な場合もある。

存在するかチェック

strstr(str, find)
結果が「false」の場合、存在しない
※本来の目的(?)→[str]に[find]が含まれる場合、[find]は含むそれ以降の文字を取得。
stristr(str, find)
結果が「false」の場合、存在しない(大文字・小文字の区別なし)
※strstr()の大文字・小文字を区別しないバージョン

正規表現

preg_match(find, str)
[str]に[find]が存在するかチェック

存在するもの自体を抜きだし(正規表現)

preg_match(find, str, match)
[str]に[find]が存在するかチェックをして、存在するなら[find]自体を[match]の[0]に入れる。
※「preg_match('/<.*?>/',"re<_0_>cat<_1_>nap",$match);」としたら「$match[0]」に「<_0_>」がはいる。
preg_match_all(find, str, matchs)
preg_match()は最初の一つだけど、preg_match_all()は全部。[matchs]のあとにパラメータをいれれば色々とできる。
※「preg_match('/<.*?>/',"re<_0_>cat<_1_>nap",$match);」としたら「$match[0][0]」に「<_0_>」、「$match[0][1]」に「<_1_>」がはいる。

空白削除

trim(str)
[str]に含まれる最初(左側)と最後(右側)の空白文字を削除
ltrim(str)
[str]に含まれる最初(左側)の空白文字を削除
rtrim(str)
[str]に含まれる最後(右側)の空白文字を削除

一部取得

strstr(str, find)
[str]に[find]が含まれる場合、[find]を含むそれ以降の文字を取得。
「strstr('aaa@bbb','@')」の場合、戻り値は「@」を含む以降の文字列なので「@bbb」。
※「strstr('aaa@bbb@ccc','@')」の場合、戻り値は最初の「@」を含む以降の文字列になり「@bbb@ccc」。
strstr(str, find, TRUE)
[TRUE]があり、[str]に[find]が含まれる場合、[find]を含まないそれ以前の文字を取得。
※php5.3.0以降
「strstr('aaa@bbb','@',TRUE)」の場合、戻り値は「@」を含まない以前の文字列なので「aaa」。
※「strstr('aaa@bbb@ccc','@')」の場合、戻り値は最初の「@」を含まない以前の文字列なので「aaa」。
stristr(str, find)
strstr()の大文字・小文字を区別しないバージョン
stristr(str, find, TRUE)
strstr()の大文字・小文字を区別しないバージョン
substr(str, start, n)
[str]の[start]バイト目から[n]バイト取得

マルチバイト:日本語OK

mb_substr(str, start, n)
[str]の[start]文字目から[n]文字取得
「ini_set("mbstring.internal_encoding", "utf8");」が必要な場合もある。

置換え

str_replace(find, replce, str)
[str]の[find]を[replce]に置換え。
str_ireplace(find, replce, str)
str_replace()の大文字・小文字を区別しないバージョン
substr_replace(str, replce, n, m)
[str]の[n]バイトから[m]バイトを[replce]に置換え。
※[m]を省略で最後まで。
マルチバイト版は無いので自作してみた→「php substr_replaceのマルチバイト版

正規表現

preg_replace(find, replce, str)
[str]の[find]を[replce]に置換え。)
「ini_set("mbstring.internal_encoding", "utf8");」が必要な場合もある。
[find]は「/xxx/」的な感じで記述するけど「utf8」の場合「/xxx/u」をつけて置いたほうが無難かも。

分割(配列に変換)

split(find, str)
[str]を[find]で分割
※php5.3.0以降非推奨
explode(find, str)
[str]を[find]で分割

正規表現

preg_split(find, str)
[str]を[find]で分割>

配列を文字列に変換

implode(delimiter, $ary)
区切り文字[delimiter]で配列[$ary]を結合して文字列に変換

文字列の長さ

strlen(str)
[str]の長さ(nバイトとして数える)

マルチバイト:日本語OK

mb_strlen(str)
[str]の長さ(n文字として数える)
「ini_set("mbstring.internal_encoding", "utf8");」が必要な場合もある。

型変換

php 変数の値の型変換

intval(str)
文字型の[str]を「数値」に変換
""+$num
数値型の[$num]を文字型に変換
「$str=""+$num」としてあげる。
gettype(str)
[str]の型を取得。
「$type=gettype($num)」って感じで型を取得する

新着(ニュース関連以外)

2017-07-19
折れ線グラフをもう少しゆるやかに・・・というか何というか・・・調べていくと「移動平均」っていう言葉にたどり着いた
2017-07-10
FuelPHPの1.8をダウンロードして使っていたらセッションが使えないということに気付いた。
2017-06-27
MACにWin10をインストールしてみた:再挑戦。
2017-06-25
「簡単」っていうヤツらが多いけど・・・難しいぞ。
2017-06-06
FuelPHPのOILでtry・catchを使ったらエラーになった。