トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

文字列処理_PHP

PHPでの文字列処理

文字列の連結

$str  = "Hello";
$str2 = "World!!";
$str3 = $str.$str2;

文字列を連結する場合は「.」を使うことでつなげることができます。$str3は「HelloWorld!!」となります。

$str3 = "$str$str2";

でも連結できます。ただし、文字列内に変数を内包する場合はダブルクォーテーションでくくる必要があります。ダブルクォーテーション内には配列を指定することはできません。配列を文字列連結する場合は「.」を使用します。

$ar = array('Apple', 'Orange', 'Grape');
$str = "果物:".$ar[0];

文字列を数値に変換(intval)

$str = 1234;
$a = intval($str) + 10;

結果は、$aが1244になります。

数値を文字列に変換(strval)

$a = 1234;
$str = strval($a);

結果は、$strが'1234'になります。

文字列を浮動小数点の値に変換(floatval)

$str = '12.56';
$fVal = floatval($str);

結果は、$fValが12.56となります。

文字列末尾のスペース、\n、\r、\tをカット(chop)

$str = "hoehoe\n   ";
chop($str);

結果は、$strが'hoehoe'になります。改行コードを含む1行分の読み込みなどで利用できそうです。

文字列長の取得(strlen)

$str = '123あいう';
$len = strlen($str);

文字列のバイト数を取得します。2バイトコードは+2で加算されます。結果は、$lenが9となります。

文字列の置き換え(str_replace)

$str = 'ABCDEFGH';
$str2 = str_replace("CD", "cd", $str);

str_replaceの第一引数は置換対象の文字列、第二引数は置換後の文字列、第三引数は元の文字列です。結果は、$str2が'ABcdDEFH'となります。

文字列を英字小文字にする(strtolower)

$str = strtolower("HomePage");

結果は、$strが'homepage'となります。

文字列の取り出し(substr)

$str = substr("HomePage", 4, 4);

substrの第一引数は元の文字列、第二引数は取り出し開始位置、第三引数は取り出す文字数です。結果は、$strが'Page'となります。

文字列中の文字(列)位置を調査(strpos)

$pos = strpos("HomePage", "P");

第一引数で指定された文字列より、第二引数の文字列が存在する位置を調べます。結果は、$posが4となります。

対象文字列が存在しない場合を判定するには、「if(gettype($pos) == 'integer')」で変数タイプを調べるといいようです。もし、数値が入っている場合はgettypeは'integer'が返されます。カラの場合(対象文字列が存在しない場合)は、'boolean'になってました。

数値の桁数をそろえた文字列を取得する(str_pad)

日付などを表示する場合に、「2005/11/2」ではなく「2005/11/02」のように0で埋めて表示したい場合があります。このときに便利な関数が「str_pad」です。

例えば、「53」を最大4ケタの数値として「0053」として表示したい場合は、以下のように記述します。

$iVal = 53;
$sVal = str_pad($iVal, 4, '0', STR_PAD_LEFT);

str_padの第一引数に数値、第二引数に最大ケタ数、第三引数にカラの場合に埋めたい文字、第四引数に埋める文字の配置位置(STR_PAD_LEFTで左を埋める)を指定します。

指定の文字で文字列を分解する(split)

CSVのような「,」で文字列を分解したいときは、「split」関数を使うと楽できます。

$str = "item1,item2,,test";
$ar = split(',', $str);
$cou = count($ar);
for($i = 0; $i < $cou; $i++) {
    print(strval($i)." : ".$ar[$i]."<br>\n");
}

splitの第一引数に分解する場合の区切り文字、第二引数に分解したい文字列を入れます。

上記の場合、

0 : item1
1 : item2
2 : 
3 : test

のように出力されます。コンマで分解されているのが分かります。

Future's Laboratory 技術格納庫 2004-2013 Yutaka Yoshisaka.