![見出し画像](https://assets.st-note.com/production/uploads/images/115672955/rectangle_large_type_2_221e4bdc5a05dc259d57450e085f1e36.jpeg?width=800)
「文字列関数」について
文字列関数とは
文字列関数とは、プログラミングを行う中で文字列に対して色々な操作を行うための関数群のこと。
よく使われる文字列関数の例
引用符(')
特殊コードや変数はただの文字列として扱われる。
//引用符の例
'this is a simple string';
//途中で改行してもOK
echo 'You can also have embedded newlists in
strings way as it is
okay to do';
二重引用符(")
特殊コードや変数はを使用できる。
文字列の中で特殊なコードや変数を使いたい場合は「ダブルクォーテーション」を使う。
//二重引用符の例
"this is a simple string";
//途中で改行してもOK
echo "You can also have embedded newlists in
strings way as it is
okay to do";
ヒアドキュメント
小なり(<)の記号を3つ書いた後に好きなIDを付け、それと同じIDが書かれるまでの間の部分が文字列として認識される。
改行を多く含む長文の文字列を指定したい場合は引用符や二重引用符よりもコードの視認性が上がる。
二重引用符同様、中で特殊なコードや変数を使用可能
$str = <<<EOD
Example of strings
spanning multiple lines
using haredoc syntax.
EOD;
注意:終端のIDを指定する部分は必ず行頭から書き始める必要がある。
インデントはつけない!
Nowdoc
ヒアドキュメントのシングルクオーテーション版
中で特殊なコードや変数は使用できない。
書き方は小なり(<)の記号を3つ書いた後に好きなシングルクオーテーションで囲んだIDを付け、それと同じIDが書かれるまでの間の部分が文字列として認識される。
echo <<<'EOD'
Example of strings
spanning multiple lines
using haredoc syntax.
EOD;
エスケープ処理
プログラムの中で使う特殊な記号を「ただの文字」として扱いたいときに行う処理
例えばPHPではバックスラッシュ「\」がエスケープ文字となっており、
これを前につけることで、その文字を構文ではなく「ただの文字」として認識させることができる。
echo "明日の天気は晴れです"
//ダブルクォーテーションそのものを画面に出力させたいとき
//NG
echo "明日の天気は"晴れ"です"
//OK
echo "明日の天気は\"晴れ\"です"
//そのまま書くとエラーになる
echo "<a href="#" target="blank">リンク</a>";
//バックスラッシュ「\」をつけてエスケープ
echo "<a href=\"#\" target=\"blank\">リンク</a>";
. / .= [結合]
「.」で結合
「.=」で結合と代入を同時に行う
//文字列演算子「.」を使って結合
$result = 'Git' . 'Hub';
echo $result;
// 出力結果: GitHub
//文字列結合代入演算子「.=」を使って結合
$result = 'Git';
$result .= 'Hub';
echo $result;
// 出力結果: GitHub
trim [空白を削除]
trim関数で文字列の両端の空白を削除します。
$str = " abc ";
// trim関数実行
$result = trim($str);
var_dump($result);
// 出力結果: string(3) "abc"
str [文字の取り出し]
指定された文字を取り出すことができる。
//3番目の文字を取り出す(1文字目は0からカウントされるため)
$str[2]
//文字列の最初の文字を取得する
$str = 'This is a test.';
$first = $str[0];
echo $first;
//出力結果 T
//文字列の3番目の文字を取得する
$third = $str[2];
echo $third;
//出力結果 i
//文字列の最後の文字を取得する
$str = 'This is still a test.';
$last = $str[strlen($str)-1];
echo $last;
//出力結果 .
//文字列の最後の文字を変更したい
$str = 'Look at the sea';
$str[strlen($str)-1] = 'e';
echo $str;
//出力結果 Look at the see
strlen/mb_strlen [文字列の長さを取得]
文字列の長さを取得したいときに使う。
例)「Hello」という文字列の長さを取得すると「5」という数値を返してくれる。
$str = 'Hello';
$result = strlen($str);
var_dump($result);
//出力結果 int(5)
ただし、ここで取得されるのは正確には「文字数」ではなく「バイト数」になる。
半角英数字の場合は「1文字=1バイト」なので問題ないが、日本語などの全角文字(マルチバイト文字)の場合は正確な文字数を取得することが出来ない。
その場合は「mb_strlen」を使う。
$str = 'こんにちは';
$result = mb_strlen($str);
var_dump($result);
//出力結果 int(5)
//↓NG例
$str = 'こんにちは';
$result = strlen($str);
var_dump($result);
//出力結果 int(15)
substr/mb_substr [文字列の中から1部抜き出し]
文字列の中から特定の1部分だけを抜き出したいときに使う。
strlen同様に日本語に対応させるためには先頭に「mb_」をつけて
「mb_substr」とする。
例)「ABCDEFG」の中から「BCD」だけを抜き出すことができる。
$str = 'アイウエオカキクケコ';
// mb_substr関数実行 3文字目から3文字切り出す。
$result = mb_substr($str, 2, 3, 'UTF-8');
var_dump($result);
// 出力結果: string(3) "ウエオ"
strpos/mb_strpos [特定の文字列が最初に現れる位置の取得]
文字列の中に「特定の文字列が最初に現れる位置」を検索するときに使用する。
例)「今日は、いい天気ですね」という文字列に対して「天気」という文字を検索すると「6」という数値が返ってくる。
注意点:最初の1文字目は「0」からスタートするため、7文字目の場合は「6」という数値が返ってくる。
//strpos
$str = 'abcdefg';
$result = mb_strpos($str, 'c');
var_dump($result);
//出力結果 int(2)
//mb_strpos
$str = '今日は、いい天気ですね';
$result = mb_strpos($str, '天');
var_dump($result);
//出力結果 int(6)
str_starts_with/str_ends_with [特定の文字のスタート、終了をチェック]
str_starts_with → 特定の文字で「スタート」しているかをチェックする。
str_ends_with → 特定の文字で「終わって」いるかをチェックする。
str_replace [文字の置換]
特定の文字列を別の文字に置き換える(置換)するときに使用
$str = '山田'
//str_replace関数実行 山田を田中 に置き換え
$result = str_replace("山田", "田中", $str);
var_dump($result);
// 出力結果: string(2) "田中"
とすると、「山田」が「田中」に置き換わる。
また、置き換える文字を未指定にすると、特定の文字を削除する用途にも使える。
//削除する例
$str = "123-4567"
//123-4567を1234567にしたい
str_replace("-", "", $str);
(string)/strval [変数を文字列に変換]
(stirng)キャストやstrval()関数を使うと、変数を文字列へ変換することができる。
implode[配列を結合]
implode関数を使って、文字列配列を指定した区切り文字で連結して一つの文字列にする。(explodeの逆)
$columns = ['id', 'name', 'note'];
//implode関数実行 文字列配列の全要素を','区切りで連結
$result = implode(',', $columns);
var_dump($result);
//出力結果: string(14) "id, name, note"
explode [配列に分割]
explode関数を使って、連結した一つの文字列を指定した区切り文字文字列配列にする。(implodeの逆)
$str = 'id, name, note';
//explode関数実行 ','区切り文字列を配列に分割
$result = explode(',', $str);
var_dump($result);
//出力結果: array(3) { [0]=> string(2) "id" [1]=> string(4) "name" [2]=> string(4) "note" }
この記事が気に入ったらサポートをしてみませんか?