こんにちは!ライターのmuramatsuです。
PHPでは文字列を扱うさまざまな関数が用意されているのをご存知ですか?
この記事では、
- 文字列に関しての基礎知識
- 文字列を扱う基本的な方法
- 文字列を連結する方法
という基本的な内容から、
- 文字列を検索する方法
- 文字列を置換する方法
- 文字列を分割する方法
などのさまざまな文字列を操作する関数に関しても解説していきます。今回はそんなPHPで使用する文字列操作について、わかりやすく解説します!
文字列とは
文字列は簡単に言うと、文字や数字のかたまりのことです。「abc」などのアルファベット、「あいう」などの日本語、「123」などの数字や「、」「。」「?」などの記号などが文字として扱われます。
文字列の例として
- いろはにほへと
- This is a pen.
- PHPとは、 Hypertext Preprocessorの略です。
- 5 + 3 の答えは? それは8です。
など、文字が連なっているものを文字列と呼びます。PHPではこの文字列の型をString(ストリング)型とも呼んでいます。
文字列を扱うクォーテーション
文字列を作成するには通常シングルクォーテーション(‘ ‘)か、ダブルクォーテーション(“ “)で文字列を指定します。
$str1 = '文字列'; $str2 = "文字列";
シングルクォーテーションもダブルクォーテーションも、どちらを使っても同じ文字列として扱われます。2つの違いについては、主にエスケープシーケンス(特殊文字)の表示がそのまま表示されるか、特殊文字そして表示されるかの違いがあります。
エスケープシーケンス(特殊文字)とは改行をしてくれる「¥n」や、記号の「¥」や「$」などがあります。それぞれの特徴
- 処理の速度が速い
- エスケープシーケンス(特殊文字)はそのまま出力される
- 変数の展開がされず、そのまま表示される
ダブルクォーテーション :
- エスケープシーケンス(特殊文字)が使える
- 変数が展開される
シングルクォーテーションやダブルクォーテーションを文字列にそのまま反映させたい場合は、バックスラッシュ 「」または「¥」を指定する必要があります。
サンプルコード
<?php // Your code here! //シングルクォーテーションで囲ったシングルクウォーテーション echo 'これは'Samurai Engineer blog'です。<br>'; //シングルクォーテーションで囲ったダブルクォーテーション echo 'これは"Samurai Engineer blog"です。<br>'; //ダブルクォーテーションで囲ったダブルクォーテーション echo "これは"Samurai Engineer blog"です。<br>"; //ダブルクォーテーションで囲ったシングルクウォーテーション echo "これは'Samurai Engineer blog'です。<br>"; ?>
実行結果
これは'Samurai Engineer blog'です。 これは"Samurai Engineer blog"です。 これは"Samurai Engineer blog"です。 これは'Samurai Engineer blog'です。
シングルクォーテーションで囲ったシングルクォーテーションは「 または ¥」が「’」の右側に必要になりますが、シングルクォーテーションで囲ったダブルクォーテーションは、必要ありません。ダブルクォーテーションで囲った場合は、シングルクォーテーションの逆となります。
文字の種類、バイト数
PHPでは文字をカウントする際の単位がbyte (バイト)となります。英数字の文字は1文字1バイトとなり、日本語などのマルチバイト文字列はエンコードと呼ばれる文字の種類(文字コード)によってバイト数が異なります。
Windowsでよく使用する文字コードであるShift_JISで半角文字は1バイト、全角文字は2バイトとなります。
文字コードUTF-8の場合は、半角英数字を1バイト、全角文字は2~6(3)バイトになります。文字列の文字数を数える際や、何文字目の文字を置換する、などの時にこのバイト数が大きくかかわってきます。
文字列を扱う基本
ここでは文字列を扱う基本として、文字列を作成・出力する方法と、文字列を改行する方法を紹介します。
文字列を作成・出力する方法
文字列を作成するには、シングルまたはダブルクォーテーションで囲みます。また囲った文字列を通常の変数に代入する事も可能です。
文字列を出力する方法は、echoを使用して出力する方法と、printやprint_rを指定する方法などがあります。以下に文字列を作成して出力するまでの基本的な方法を紹介します。
<?php echo '1. Samurai Engineer'; echo '<br>'; //改行 $str1 = "2. Samurai Engineer blog"; echo $str1; ?>
実行結果
1. Samurai Engineer 2. Samurai Engineer blog
1番目はシングルクウォーテーションで囲った文字列をechoで出力しました。
2番目はダブルクウォーテーションで囲った文字列を、変数$str1に代入し出力しました。
上記のサンプルの場合は、シングルクォーテーションをダブルクォーテーションで囲っても、ダブルクォーテーションをシングルクォーテーションにして囲っても問題ありません。文字列を出力する方法の詳細については、以下の記事で詳しく解説しています!
文字列を改行する方法
ブラウザ上で改行を表示させる場合’<br>’を使用して改行することができます。
<?php //コード中で改行 echo '1. It will be sunny today, but it will rain tomorrow.'; echo '<br/>'; //改行 //改行コードを追加 echo '2. It will be sunny today, <br> but it will rain tomorrow.'; ?>
実行結果
1. It will be sunny today, but it will rain tomorrow. 2. It will be sunny today, but it will rain tomorrow.
1番目の文字列は、見やすくするためにコード内で改行をすることも可能ですが、実行結果で改行は反映されません。1番目と2番目の文字列の間にechoで改行を表示しています。2番目の文字列には、間に改行の<br>を入れたことにより、today,の後に改行が入りました。
文字列を連結する
文字列を連結するにはカンマ「,」または、ドット「.」を使います。それぞれはどのように違うのでしょうか。
文字列や変数をカンマで連結する
単純な文字列や変数をつなげるには、カンマ「,」でつなぐことができます。これは文字列を結合しているというよりは、文字列を並べているだけになります。
echo $文字列1, $文字列2
サンプルコード
<?php $name = 'コロ'; echo 'この犬の名前は', $name, 'です。'; ?>
実行結果
この犬の名前はコロです。
実行結果を見ると、文字列も変数もつながって表示されていますが、実際には並べて表示されているだけとなります。
文字列や変数をドットで結合する
ドット「.」は結合演算子と呼ばれ、カンマとは違い文字列や変数が結合されます。
echo $文字列1.$文字列2
サンプルコード
<?php $name = 'コロ'; $nickName = 'リン'; echo 'この犬の名前は', $name, 'です。<br>'; echo 'ニックネームは'. $name. $nickName. 'です。'; ?>
実行結果
この犬の名前はコロです。 ニックネームはコロリンです。
ドット「.」で文字列同士、 変数同士、文字列と変数を結合させることができます。
ドットイコール(.=)で変数に追加で文字列を連結させる
ドットイコール「 .= 」は結合代入演算子と呼ばれ、ドットで既に文字列が代入されている変数に追加で新しい文字列を連結することができます。
echo $変数.= $文字列2
サンプルコード
<?php //変数に'コロ'を代入 $name = 'コロ'; echo '犬の名前は', $name, 'です。<br>'; //ドットイコールで'リン'を追加 $name.= 'リン'; echo 'ニックネームは'. $name. 'です。<br>'; ?>
実行結果
犬の名前はコロです。 ニックネームはコロリンです。
変数$nameに文字列’コロ’が代入され、出力しました。その後、$nameにドットイコール「 .= 」で’リン’を追加しました。$nameは‘コロリン’とが代入されているため$nameの出力結果が「コロリン」となります。
strposで文字列を検索する
文字列を検索するにはstrpos関数を使用します。strpos関数は、検索する文字列が見つかったら、文字列を最初の位置を整数に返します。
strpos ( string $検索対象文字列 , mixed $検索文字列 [, int $オフセット = 0 ] )
第一引数には検索対象の文字列を指定します。第二引数には検索する文字列を指定します。第三引数のオフセットは、検索開始位置を指定することができます。
また、日本語などのマルチバイト文字列を検索するには、mb_strpos関数を指定します。strpos関数とmb_strpos関数を使用した文字列を検索する方法については、以下の記事で詳しく解説しています!
str_replaceで文字列を置換する
検索した文字列に一致した全ての文字列を置換するには、str_replace関数を使用します。
str_replace( $検索文字列 , $置換後文字列 , $検索対象文字列 [, int &$count ] )
第一引数に検索文字列を指定します。第二引数に置換後の文字列を指定します。第三引数には検索対象の文字列を指定します。
また、文字の変換または、部分文字列の置換を行うにはstrtr関数を使用し、大文字小文字を区別しないで置換するにはstr_ireplace関数を使用します。そんな文字列を置換するためのさまざまな方法については、以下の記事で詳しく解説しています!
explodeとstr_splitで文字列を分割する
文字列を分割するには、explode関数とstr_split関数を使用します。explode関数は文字列を複数の文字列に分割します。
array explode($デリミタ, $入力文字列 [,$limit])
第一引数には分割する区切り文字であるデリミタを指定します。第二引数には入力文字列を指定します。
str_split関数は文字列を1文字ずつ分解したり、指定した文字数で分割したいときに使用します。
array str_split( $入力文字列 [, $分割文字数 ] )
第一引数に入力文字列を指定します。第二引数を指定した場合は分割文字数を指定することができます。
そんな文字列を分割するためのさまざまな方法については、以下の記事で詳しく解説しています!
まとめ
ここではPHPで
などを紹介しました。PHPに限らず、プログラミングで文字列を操作することはよくありますので、しっかりと覚えておきましょう。もし、文字列を扱う方法を忘れてしまったら、この記事を思い出してくださいね!