カテゴリー

キーワード

 
> 【PHP】覚えておくと便利な文...

【PHP】覚えておくと便利な文字列に関するPHP関数①


2016 年 5 月 20 日 投稿    view: 2087
タグ:
このエントリーをはてなブックマークに追加

PHP 文字列関数①

 

こんにちは、WEBマーケティング部の杉尾です。

今回は、覚えておくと役に立つ文字に関するPHPの関数を紹介します。

 

【PHP関数】nl2brの使い方

改行文字の前に、HTMLの改行文字を挿入して出力します。

まず、例をご覧ください。

 

<?php
echo nl2br("Scene\n Live");
?>

 

上の例の出力は以下となります。

 

Scene<br />
 Live

 

気をつけたいのは、HTML5では、改行が<br />ではなく、<br>だということです。

ですので、HTML5でコードを記述している場合は、以下のように書いてください。

 

<?php
echo nl2br("Scene\n Live", false);
?>

 

この場合、出力は以下のようになります。

 

Scene<br>
 Live

 

()内の最後に【false】を書き加えました。

これは、PHPバージョン、5.3.0から追加されたオプションで、is_xhtmlパラメータといいます。

このパラメータを【true】にすると、xhtmlの準拠の改行を使うことになるので、<br />が挿入されることになります。

 

また、改行文字は以下のものもありますので参考までに。

 

\r\n \n\r \r

 

【PHP関数】mb_strimwidthの使い方

文字列を、指定した幅にまるめて表示してくれる関数です。

 

ここでは【幅】という言葉がポイントです。

まずは、具体例をご覧ください。

 

<?PHP
$len = 9;
echo mb_strimwidth("Scene Live", 0, $len, ".....","utf-8"); // 実行結果:Scen.....
echo mb_strimwidth("シーンライブ", 0, $len, ".....","utf-8"); // 実行結果:シー.....
echo mb_strimwidth("株式会社シーンライブ", 0, $len, "..","utf-8"); // 実行結果:株式会..
echo mb_strimwidth("株式会社シーンライブ", 0, $len, ".","utf-8"); // 実行結果:株式会社. 
?>

 

上記コード中、//から後ろはコメントアウトされていますので、実際のウェブ画面には表示されません。

 

第一引数には『まるめたい文字列』

第二引数には『開始位置(先頭の文字が0番目)』

第三引数は『まるめる幅』

第四引数は『文字エンコーディング』

を指定します。

 

気をつけたいポイントが2つあります。

 

ポイント① 第三引数に指定する数字

第三引数に指定する数字は要注意です。

 

半角文字は1文字として、全角文字は2文字分として数えられます。

つまり、バイト数ですね。

 

もう一つ気をつけたいのは、追加した文字列("....."や"..")の文字数分も切り取るときの数に含まれる点です。

 

ですから、第三引数に『"....."』を指定すると、5文字分カウントされるということです。

(上の例の最初と二番目の出力結果を見るとわかりやすいと思います)

 

ポイント② 第四引数の文字エンコーディング

2つ目のポイントは、第四引数文字エンコーディングです。

 

これを省くと内部文字エンコーディングを使用するので、環境によっては意図しない結果になります。

 

ですので、必ず文字コードを指定してください

 

【PHP関数】number_formatの使い方

数字を、千の位ごとにグループ化してフォーマットしてくれる関数です。

まずは具体例をご覧ください。

 

<?PHP
$num01 = 1234.12;
$num02 = 1234.56;
$num03 = 1234.5678;

echo number_format($num01); //具体例① 実行結果:1,234
echo "<br>";
echo number_format($num02); //具体例② 実行結果:1,235
echo "<br>";
echo number_format($num03, 1); //具体例③ 実行結果:1,234.6
echo "<br>";
echo number_format($num03, 2); //具体例④ 実行結果:1,234.57
echo "<br>";
echo number_format($num03, 3, ".", ","); //具体例⑤ 実行結果:1,234.568
echo "<br>";
echo number_format($num03, 3, "q", "p"); //具体例⑥ 実行結果:1p234q568

?>

 

$num01、$num02、$num03は変数です。それぞれに数字を代入しているだけです。
上記コード中、//から後ろはコメントアウトされていますので、実際のウェブ画面には表示されません。

 

【解説】

//の後ろの実行結果をご覧ください。

 

千の位と百の位の間に『,』が入っていると思います。(具体例①~具体例⑤)

 

引数を何も入れない場合、少数点以下を四捨五入して切り捨てます。(具体例①、具体例②)

 

小数点以下を含む場合は、第二引数に残したい小数点以下の桁数を記述してください。(具体例③、具体例④)

 

また区切りの文字を変えることができます。第三引数と第四引数の両方を入れてください(具体例⑤、具体例⑥)

 

気をつけたいのは、(第一、第二に入れた上で)第三引数にだけ値を入れても何も表示されないということです。

 

第三引数と第四引数の両方に値を入れてください。

 

【PHP関数】str_replaceの使い方

検索文字列に一致した、すべての文字列を置換してくれます

 

まずは具体例をどうぞ。

 

<?PHP
$str01 = '株式会社Scnene Live';
echo str_replace('Scnene', 'シーン', $str); //具体例① 実行結果:株式会社シーン Live
$str02 = '株式会社Scnene Live 株式会社Scnene Live';
echo str_replace('Scnene', 'シーン', $str02); //具体例② 実行結果:株式会社シーン Live 株式会社シーン Live

?>

 

$str01、$str02は変数です。それぞれに文字列を代入しているだけです。
上記コード中、//から後ろはコメントアウトされていますので、実際のウェブ画面には表示されません。

 

【解説】

まず、$str01、$str02にそれぞれ文字列を入力しています。

 

第一引数に『検索して置換したい文字列』(具体例①で言うと、Scnene)
第二引数に『置換後の文字列』(具体例①で言うと、シーン)
第三引数に『置換対象の文字列』(具体例①で言うと、$str01)

を記述してください。

 

また、具体例②をご覧いただくとわかるのですが、検索対象が複数でも文字列を置換してくれます。

 

【PHP関数】strlen, mb_strlenの使い方

文字列の長さを取得することができます

 

2つの違いは、strlenが『バイト数』を取得するのに対し、mb_strlenは文字数をそのまま取得します。

 

具体例をご覧ください。

 

<?PHP

$str001 = "abc";
$str002 = "あいう";
$str003 = "abcあいう";

echo strlen($str001); //具体例① 実行結果: 3
echo strlen($str002); //具体例② 実行結果: 9
echo strlen($str003); //具体例③ 実行結果: 12

echo mb_strlen($str001,"utf-8"); //具体例④ 実行結果: 3
echo mb_strlen($str002,"utf-8"); //具体例⑤ 実行結果: 3
echo mb_strlen($str003,"utf-8"); //具体例⑥ 実行結果: 6

?>

 

$str001、$str002、$str003は変数です。それぞれに文字列を代入しているだけです。
上記コード中、//から後ろはコメントアウトされていますので、実際のウェブ画面には表示されません。

 

【解説】

strlenの場合、文字列のバイト数を取得しますので、具体例②、③では日本語のバイト数分がプラスされています。

 

strlenは、引数に文字エンコーディングを入れられません。

 

調べたい文字列に全角文字(日本語)が入る場合は、mb_strlenを使ってください。

 

そして、その場合はmb_strlenの第二引数に文字エンコーディングを指定してください。

ここではUTF-8を指定しています。

 

【PHP関数】strpos、mb_strposの使い方

strposは、指定文字列が何番目から存在するか調べてくれます。

mb_strposは、指定文字列(マルチバイト文字、日本語など)が何番目から存在するか調べてくれます。

 

まずは具体例をごらんください。

 

<?PHP
$str0001 = "abcde";
$str0002 = "あいうえお";
$str0003 = "abcde abcde";

echo strpos($str0001, "b"); //具体例① 実行結果:1
echo strpos($str0002, "い"); //具体例② 実行結果:3
echo mb_strpos($str0002, "い",0,"utf-8"); //具体例③ 実行結果:1
echo strpos($str0003, "a", 1); //具体例④ 実行結果:6

?>

 

$str0001、$str0002、$str0003は変数です。それぞれに文字列を代入しているだけです。
上記コード中、//から後ろはコメントアウトされていますので、実際のウェブ画面には表示されません。

 

【解説】

まず最初に$str01、$str02に、それぞれ文字列を代入しています。

 

具体例①

具体例①では、『abcde』という文字列の中で、『b』が何番目に含まれているかを調べています。

最初の文字は『0』番目と認識されるので、『a』が0、『b』が1という結果が返ってきます。

 

具体例②

具体例②では、『い』が2番目に存在する文字であるにもかかわらず、『3』という実行結果が返っています。

 

具体例①と比較するとわかりますが、本来返ってくる値は『1』でないといけませんよね。

違う数字が返ってくる理由としては、strposが日本語マルチバイト文字に対応していないからです。

 

ですので、日本語を使う場合はmb_strposを使ってください。

 

それが、具体例③です。

 

具体例③

mb_strposを使うときの注意点は、第三引数と第四引数を両方とも記述することです。

第三引数を『0』とすると、最初から検索してくれます。

また、第四引数を指定しないと、思い通りの結果にならないことがありますので気をつけてください。

 

具体例④

最後に具体例④をご覧ください。

 

これは、strposで第三引数を指定した場合です。

第三引数は、どの位置から検索を開始するか指定するものです。

この場合、『1』を指定していますので、『b』から検索を開始します。

 

気をつけたいのは、検索開始位置が第三引数であるだけで、位置は最初から数えて何番目かを教えてくれるということです。

 

実践例:指定文字列内に文字が含まれているかどうか

と、ここまで基本的な使い方を紹介しましたが、実際使用するのはこういう場合が多いと思います。

指定文字列内に、探したい文字が含まれているかどうかの判定です。

 

<?PHP

$str = "あいうえお";
if(strpos($str, "いう") !== false){
 echo "含まれています";
}

//実行結果:含まれています

?>

 

$strは変数です。文字列を代入しているだけです。
上記コード中、//から後ろはコメントアウトされていますので、実際のウェブ画面には表示されません。

 

【解説】

日本語が含まれているかいないかに関しては、strposでも問題ありません。

 

ここで気をつけたいのは、論理演算子(!==)です。

場合によっては文字列に含まれていてもFALSEを返して、思い通りの結果を得られないことがあります。

 

ですので、必ず『===演算子』を使ってください。

 

また、strposを使ったときに返ってくる値は『数字』か『FALSE』です。

 

ですので、例にあるように、『falseでなければ含まれている』というコードを書かなければいけません。

『!==false』の部分を『===true』と書かないようにしてください。

 

 

つまり、下記のコードは誤りです。

<?PHP
$str = "あいうえお";
if(strpos($str, "あ") === true){
 echo "含まれています";
}

//実行結果:

?>

 

この場合、実行結果は返ってきません

 

 

 

まとめ

覚えておくと、きっと役に立ちます。

次の記事で続きを書きますので、またご覧ください。

 

 

【続きを書きました】

⇒ 【PHP】覚えておくと便利な文字列に関するPHP関数②
 

 

 

こちらも参考にしてください。

【PHP】PHP関数「substr」「mb_substr」の使い方を紹介します

 

 

 

杉尾成行 顔写真

この記事を書いた人

杉尾成行

株式会社SceneLive Webマーケティング部長

ウェブマーケティングコンサルタントとして、クライアントのウェブ集客をサポートしている。
また、ウェブ制作、システム制作にも携わり、数々のサイトを手掛けている。
当ホームページ、ブログシステムも制作。

前職:ライター、小説家

ウェブマーケティングコンサルタントとしてのブログ
ウェブ参謀

個人ブログ(オリジナル小説他) ⇒ 35deFA


カテゴリー

タグ
この記事が気に入りましたら、是非、他の方にもシェアしてください。
このエントリーをはてなブックマークに追加
関連記事