1C.5.3 文字列関数(分解と合成)
分解
| 構文 | 説明 |
|---|---|
array split ( string pattern, string string, [,int limit] ) array spliti ( string pattern, string string, [,int limit] ) |
文字列stringをセパレータpattern(正規表現 )により分割した部分文字列から成る配列を返します。 セパレータが1つもマッチしなかった場合は、stringを返します。これはstringが空の場合でも同じです。 エラーの場合、セパレータが空の場合は、split()はFALSEを返します。 limitが指定された場合、返される配列には 最大limitの要素が含まれます。 この場合、 最後の要素にはstringの残りの部分文字列が入っています。 spliti()は大文字小文字を区別しない事以外はsplit()と同じです。 Perl互換の正規表現を使用する場合はpreg_split()を使用します。 セパレータが正規表現を必要としない場合、explode()を使う事もできます。 用例:
list ($year,$month,$day) = split('[\/.-]',date("Y-m-d"));
|
array explode ( string separator, string string [,int limit] ) |
文字列stringをセパレータseparatorにより分割した部分文字列から成る配列を返します。 セパレータが1つもマッチしなかった場合は、stringを返します。 これはstringが空の場合でも同じです。 エラーの場合、セパレータが空の場合は、explode()はFALSEを返します。 limitが指定された場合、返される配列には 最大limitの要素が含まれます。 この場合、最後の要素にはstringの残りの部分文字列が入っています。 用例:
list ($year,$month,$day) = explode('-',date("Y-m-d"));
|
string strtok ( string string, string delimiters ) |
文字列stringから 区切り文字(デリミタ)によって区切られたな文字列(トークン)を切り出し、そのトークンを返します。 delimitersには区切り文字を複数個指定することができます。切り出すトークンが無くなった場合、falseを返します。 strtok() は最初の呼出しで引数stringを取り込み、 2回目以降の呼出しでは内部的に保持しているのトークン切り出し後の文字列を使用します。 従って、最初の呼出しでは、文字列stringを指定しますが、2回目以降の呼出しでは指定しません。 デリミタ が先頭や最後にある場合、または連続する場合でも、strtok()は空文字を返しません。 strtok() を foreach などの制御構造で使用する場合、 この関数は "0" を返す可能性があるので返り値の評価は ===演算子 を使用します。 用例:
$delimiter = " \n\t";
$token = strtok($text, $delimiter);
while ($token !== false) {
echo "$token\n";
$token = strtok($delimiter);
}
通常、文字列の分解は split() や explode() で十分ですが、 最初に切り出した文字列だが欲しい場合は、手軽な strtok() を好む人もいます。 用例:
$host = "www.y2sunlight.com"; $root_node = strtok($host,"."); |
合成
| 構文 | 説明 |
|---|---|
string join ( string glue, array pieces ) string implode ( string glue, array pieces ) |
配列piecesの各要素にglueをはさんで1つの文字列します。 join()はimplode()のエイリアスです。 用例:
$date = join('-',array($month,$day,$year));
|
