この章では文字列に関する関数について説明します。
先ほど配列に関する関数を説明しましたが、今度は文字列を操作する関数について説明します。 substr関数は指定した文字列の中の一部分を取得したり、文字列の一部を他の文字列に置換します。
第1引数は対象となる文字列を指定し、第2引数は文字列の中の開始位置を指定し、第3引数は切り出す文字の長さです。
第3引数を省略した場合は文字列の末尾までを取り出します。
第4引数を指定すると1番目から3番目の引数によって指定した文字列を第4引数の文字列で置き換えます。
では例をみてみましょう。 この例では第3,第 4引数を省略しているので、第2引数で指定した位置から、最後までを取得して$n1に代入しています。
位置の指定方法で気を付けることは先頭の文字の位置は0であり、1から数えるのではないので、注意してください。
$moji1の文字列は一部をsubstrで取り出されても、$moji1自体は変化しません。
つまり、最後にで出力してもが出力されます。
次の例をみてみましょう。
第 2引数にマイナスの値を入れた場合には以下の図のように末尾から数えます。
マイナスの値を入れた位置から末尾までを取得して$n2に代入しています。
次の例をみてみましょう。
Americaの先頭から2番目の文字から2つを取得します。
第2引数が2なので2個切り出しています。
結果は「me」です。
次の例をみてみましょう。
franceの先頭から2番目の文字から、末尾から2番目の文字までの間の文字列を取得します。
このように第3引数にマイナスを指定すると第2引数で指定した位置から第3引数で指定した位置までの間の文字列を取り出すことが出来ます。
結果は「ran」です。
次の例をみてみましょう。 4番目の引数には置き換える文字列を指定します。
置き換えの文字列は2番目と3番目の引数によって指定した文字列です。
1番目の引数は文字列が代入されている変数でなければいけません。
それは置きかえられた新しい文字列が入れられるようにするためです。
これは元の文字列の内容が書き替わるので注意してください。
結果は以下の通りです。
「hawai is fun」
次はrand関数について説明します。 「返される乱数の最大値」を入力すると0から指定した数値未満までの乱数を返します。
引数を省略すると、0から1までの値を返します。
また、返される数値には小数点が含まれます。
では例をみてみましょう。 乱数なのでどの数値が出力されるのかはそのたびに変わります。
この例の場合には引数に4を指定したので、4までの数値が更新するごとに変わります。
例えば小数点を含む値なのでなどと出力されます。
この例は
「print rand(4);」と書いても同じ意味になります。
次の例をみてみましょう。 引数を省略した場合には0から1までの値を返しますので、例えばなどと出力されます。
次の例をみてみましょう。 小数点を含む数値の整数の部分だけを取り出すにはrand関数の前にintを付けます。
例えばという小数点ではなく2と整数が出力されます。
rand関数の前あるintは int関数と言いまして小数点以下を無視して、整数部分だけを返します。
では以下のint関数についての例を見てみましょう。
以下の例は変数に入っている小数点以下を切り捨てるので、結果は0です。 ではrand関数を使っておみくじを作ってみましょう。 rand関数を使うと更新ボタンを押すごとに乱数値が変わるので、占いを作ることが出来ます。
この例ではrand関数の戻り値を配列の添え字にしています。
この例の場合にはint関数は付けても付けなくてもどちらでも結構です。
なぜなら、配列の添え字は整数部分しか入れられないので、自動で小数点以下を切り捨ててくれるからです。
次にucfirst関数について説明します。 ucfirst関数は対象の文字列の先頭の文字を大文字に変換した文字列を返します。 結果は「America」になります。
以下のように書いても同じ意味になります。 すべての文字を大文字に変換したい場合はuc関数を使います。
結果は「AMERICA」になります。
対象の文字列の先頭を小文字に変換したい場合はlcfirst関数を使います。
結果は「book」になります。
対象となる文字列を全て小文字に変換するにはlc関数を使います。
結果は「world」になります。
次はindex関数について説明します。
index関数は対象となる文字列の中に第2引数で指定した文字列が含まれているかどうかを検索し、含まれている場合は最初に見つかった位置を数値で返します。
見つからなかった場合は「-1」を返します。
第 3引数のを省略すると0を指定したとみなされます。 第 3引数を省略しているので検索開始位置は0になります。
この例ではtoは前から3つ目の所にあるので3が返されます。
toが2つありますが、最初に見つかった位置を返します。
以下の例のように第3引数に例えば5を入れるとkyotokyotoのなかの5番目の位置から右に検索されるので結果は8になります。
rindex関数は対象となる文字列の中に第2引数で指定した文字列が含まれているかどうかを検索し、含まれている場合は最後に見つかった位置を数値で返します。
第3引数を省略した場合は最後の文字を指定したとみなされます。検索する文字が見つからない場合は「-1」を返します。
では例をみてみましょう。
toが2つありますが、rindex関数は検索の結果、最後に見つかった位置を数値で返しますので結果は8になります。
次の例をみてみましょう。
この例の場合は第3引数に3を指定しているので、対象となる文字列であるkyotokyotoの中の前から3番目の文字以内でtoを検索します。
結果は「3」になります。
次は文字列の長さを測る関数lengthについて説明します。
では例をみてみましょう。
結果は以下の通りです。
長さは5
長さは9
UTF-8は英数字は1バイトで数えて、日本語は3バイトで数えるようになっています。
英数字の場合はバイト数と文字数は同じになります。
文字コードによりバイト数は違うので注意してください。