文字列関数(String 関数)
文字列関数は多々ある為、代表的(よく使う)な関数は知っておきましょう。 ここに記載されていない文字列関数はマニュアルをご参照下さい。文字列の長さを調べる
strlen()関数は、引数の文字列の長さを取得します。
式 ≪ strlen(string) ≫
<?php
echo strlen( "abc123" );
// 日本語の場合は、1文字2バイトとなる
?>
文字列を分割する
explode()関数は、引数の文字列を指定する文字列または文字で分割することができます。このとき、分割をした値は配列となります。
式 ≪ explode(string_separator,string) ≫
<?php
$str = explode( "|", "abc|defg" );
?>
実行結果
array(2) { [0]=> string(3) "abc" [1]=> string(4) "defg" }
文字列の一部を取り出す
substr()関数は、文字列から指定したバイト分の文字列を取得します。
式 ≪ substr(string,start,[length]) ≫
<?php
// 先頭から4文字目以降を取得
$str = substr("PHP Product",4);
?>
実行結果
<?php
// 先頭から4文字目以降4文字を取得する
$str = substr( "PHP Product", 4, 4 );
?>
実行結果
<?php
// 末尾から4文字目以降4文字を取得する
$str = substr( "PHP Product", -4, 4 );
?>
実行結果
文字列の書式を整える
printf()関数とsprintf()関数は、引数の文字列の書式を変換することができます。ですが、printf()関数とsprintf()関数はそれぞれ役割が違い、printf()関数はブラウザに出力するのに対し、sprintf()関数はブラウザには出力せず、変数へ返します。
式 ≪ printf(format,[args]); ≫
≪ sprintf(format,[args]); ≫
<?php
$y = 2004;
$m = 8;
$d = 1;
printf( "%04d-%02d-%02d", $y, $m, $d );
$sp = sprintf("%04d-%02d-%02d",$y,$m,$d);
echo ("$sp");
?>
文字列の空白を削除する
trim()関数は、指定した文字列の先頭、および末尾から空白を取り除きます。
式 ≪ string trim( string str [, string charlist ] ) ≫
<?php
$str1 = trim( " abc " ) ; // 先頭と末尾の空白を削除
$str2 = rtrim( " abc " ); // 末尾の空白を削除
$str3 = ltrim( " abc " ); // 先頭の空白を削除
$str4 = trim( "-abc-", "-" ); // 「-」を削除
?>
文字列を置換する
str_replace()関数は、指定した文字列に含まれる文字列を置換します。
式 ≪ str_replace (検索文字, 置換後の文字列, 元の文字列) ≫
<?php
echo str_replace( "山田", "佐藤", "私は山田一郎です。" );
?>
実行結果
日本語に対応したマルチバイト関数もあるので、マニュアルを参照してみて下さい。
正規表現
正規表現は記号を使用し、文字列の範囲を指定して、パターンによる検索や置換を行えます。文字列の比較
対象文字列の中にパターン文字列にマッチするものがあるかないかをチェックします。
式 << preg_match("/検索パターンを表す文字列/", 比較文字列) >>
<?php
$string = "PHPサンプルプログラム。";
if (preg_match("/PHP/", $string)) {
echo "「PHP」が含まれています。";
} else {
echo "「PHP」が含まれていません。";
}
?>
特殊記号
・〇〇から始まる文字列の検索
検索パターンを表す文字列 の初めに 「^」 を指定すると、「○○で始まる文字ならば」となります。
<?php
$string = "PHPサンプルプログラム。";
/*
「 ^ 」忘れずに記述すること。
検索パターンは ^PHP となっています。
これで「PHPから始まる文字列かどうか?」を調べることができます。
*/
if (preg_match("/^PHP/", $string)) {
echo "「PHP」から始まる文字列です。";
}
?>
・〇〇で終わる文字列の検索
検索パターンを表す文字列 の最後に 「$」 を指定すると、「○○で終わる文字ならば」となります。具体的には、以下のようなプログラムになります。
<?php
$string = "サンプルプログラムPHP";
/*
検索パターンは PHP$ となっています。
これで「PHPで終わる文字列かどうか?」を調べることができます。
*/
if (preg_match("/PHP$/", $string)) {
echo "「PHP」で終わる文字列です。";
}
?>
一連の文字列との比較
「0~9の数値が含まれていれば」や「アルファベットが含まれていれば」という比較を行うこともできます。
書き方例
<?php
$string = "Apache";
// [ と ] で囲んで文字を指定すると、その中のいずれかに一致するかどうかを比較することができます。
if (preg_match("/[abc]/", $string)) {
echo "aかbかcのいずれかが含まれる文字列です。";
}
?>
範囲による指定
文字は 「-」 で範囲を表すことができます。
書き方例
<?php
$string = "Apache";
if (preg_match("/[a-z]/", $string)) {
echo "a~zのいずれかが含まれる文字列です。";
}
$string = "Apache10";
if (preg_match("/[0-9]/", $string)) {
echo "0~9のいずれかが含まれる文字列です。";
}
?>
パターン検索と置換
preg_replace()関数は、引数にある文字列と一致する文字列を置換します。
式 ≪ preg_replace(“/検索する文字/”,”置換する文字”,”対象の文字列”) ≫
<?php
$str = "PHP Product";
echo preg_replace("/PHP/","MySQL",$str);
?>
文字列を分割する
preg_split関数は、対象の文字列を指定した正規表現にマッチする部分で分割します。
戻り値は配列で、分割された部分文字列が要素として格納されます。
式 ≪ preg_split( 正規表現, 対象文字列 ) ≫
<?php
$str = "/usr/local/apache/htdocs/php";
$str_res = preg_split( "/\//" , $str ); // 「/」で分割し配列に格納
foreach( $str_res as $val ){
print $val . "
";
}
?>
