カテゴリー

キーワード

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

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


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

PHP 文字列関数②

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

今回は、覚えておくと役に立つ文字に関するPHPの関数の続きです。

 

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

 

【PHP関数】trimの使い方

trim関数は、文字列の【先頭と末尾】の両方から空白(又は指定文字)を取り除き、取り除いた文字列を返す関数です。

 

注意したいのは空白だけでなく、 \n(改行)、\t(タブ)、\r(復帰)、\0(NUL バイト)、\x0B(垂直タブ)なども除去するという点です。

 

何も指定せずにtrim関数を使った場合

では、例をご覧ください。

 

<?php
$str = " SceneLive ";
$str = trim($str);
echo $str; // 実行結果:SceneLive
?>

 

【解説】
1行目:$strは変数です(こういうときによく使います)ので、strの部分は何でも構いません。strはstring(文字列)の略だと思います。SceneLiveという文字列の前後に空白が入っています。
2行目:前後に空白が入ったSceneLiveという文字列をtrim関数にかけ、その結果を改めて$strに代入しています。
3行目:$strという変数に入っているものをechoでブラウザ上に表示させます。

実行結果は、前後に空白が入っていない【SceneLive】です。

 

第二引数に文字を指定してtrim関数を使った場合

また、第二引数に文字を指定すると、文字列の前後からその文字を除去してくれます。

その指定する文字列は、シングルクオートまたはダブルクオートで囲ってください。

 

<?php
$str = "*SceneLive*";
$str = trim($str,"*");
echo $str; // 実行結果:SceneLive
?>

 

【解説】
前項の空白が入っている場合とあまり変わりません。

 

では、前後に指定文字が複数ある場合はどうなるでしょう。

 

<?php
$str = "*****SceneLive*****";
$str = trim($str,"*");
echo $str; // 実行結果:SceneLive
?>

 

【解説】
第二引数に指定した文字列が複数ある場合、それがなくなるまで取り除いてくれます。

 

【PHP関数】ltrimの使い方

ltrim関数は、文字列の【最初】から空白(または指定文字)を取り除き、取り除いた文字列を返す関数です。

 

注意したいのは空白だけでなく、 \n(改行)、\t(タブ)、\r(復帰)、\0(NUL バイト)、\x0B(垂直タブ)なども除去するという点です。

 

何も指定せずにltrim関数を使った場合

では、例をご覧ください。

 

<?php
$str = " SceneLive";
$str = ltrim ($str);
echo $str; // 実行結果:SceneLive
?>

 

【解説】
1行目:$strは変数です(こういうときによく使います)ので、strの部分は何でも構いません。strはstring(文字列)の略だと思います。SceneLiveという文字列の前に空白が入っています。
2行目:前に空白が入ったSceneLiveという文字列をltrim関数にかけ、その結果を改めて$strに代入しています。
3行目:$strという変数に入っているものをechoでブラウザ上に表示させます。

実行結果は、空白が入っていない【SceneLive】です。

 

第二引数に文字を指定してltrim関数を使った場合

また、第二引数に文字を指定すると、文字列の最初からその文字を除去してくれます。

その指定する文字列は、シングルクオートまたはダブルクオートで囲ってください。

 

<?php
$str = "*SceneLive*";
$str = trim($str,"*");
echo $str; // 実行結果:SceneLive*
?>

 

【解説】
前項のtrim関数との違いがわかるように、文字列の後ろにも『*』を入れてみました。

実行結果は前の『*』だけが取り除かれていますね。

 

では、指定文字が複数ある場合はどうなるでしょう。

 

<?php
$str = "*****SceneLive*****";
$str = trim($str,"*");
echo $str; // 実行結果:SceneLive*****
?>

 

【解説】
こちらもtrim関数との違いがわかるように後ろにも『*****』をつけています。

第二引数に指定した文字列が複数ある場合、それがなくなるまで取り除いてくれます。

 

【PHP関数】rtrimの使い方

rtrim関数は、文字列の【末尾】から空白(または指定文字)を取り除き、取り除いた文字列を返す関数です。

 

注意したいのは空白だけでなく、 \n(改行)、\t(タブ)、\r(復帰)、\0(NUL バイト)、\x0B(垂直タブ)なども除去するという点です。

 

何も指定せずにrtrim関数を使った場合

では、例をご覧ください。

<?php
$str = "SceneLive ";
$str = rtrim ($str);
echo $str; // 実行結果:SceneLive
?>

 

【解説】
1行目:$strは変数です(こういうときによく使います)ので、strの部分は何でも構いません。strはstring(文字列)の略だと思います。SceneLiveという文字列の後に空白が入っています。
2行目:後ろに空白が入ったSceneLiveという文字列をrtrim関数にかけ、その結果を改めて$strに代入しています。
3行目:$strという変数に入っているものをechoでブラウザ上に表示させます。

実行結果は、空白が入っていない【SceneLive】です。

 

第二引数に文字を指定してrtrim関数を使った場合

また、第二引数に文字を指定すると、文字列の最初からその文字を除去してくれます。

その指定する文字列は、シングルクオートまたはダブルクオートで囲ってください。

 

<?php
$str = "*SceneLive*";
$str = rtrim($str,"*");
echo $str; // 実行結果:*SceneLive
?>

 

【解説】
前々項、前項のtrim関数、ltrim関数との違いがわかるように、文字列の前にも『*』を入れてみました。

実行結果は後ろの『*』だけが取り除かれていますね。

 

では、指定文字が複数ある場合はどうなるでしょう。

 

<?php
$str = "*****SceneLive*****";
$str = trim($str,"*");
echo $str; // 実行結果:*****SceneLive
?>

 

【解説】
こちらもtrim関数との違いがわかるように前にも『*****』をつけています。

第二引数に指定した文字列が複数ある場合、文字列の末尾からそれがなくなるまで取り除いてくれます。

 

ちなみに、、、

ちなみに、rtrimのエイリアスとしてchop関数があります。

(※chop関数は非推奨なので、これからPHPを学習されるという方は、特に知っておく必要はありません)

 

関数エイリアスとは・・・
APIの整理や他の理由により名前が変更された関数があり、古い名前が下位互換性の維持のためだけに残されている場合があります。 
エイリアスの使用は古かったり、名前が変更されていたりで移植性の低いスクリプトとなるため推奨されません。

 

【参考】

PHPマニュアル

http://php.net/manual/ja/aliases.php

 

【PHP関数】htmlspecialcharsの使い方

htmlspecialchars()は、HTMLで特殊な意味を持つ文字列を、そのまま表示できるようHTMLの表示形式に変換してくれる関数です。

 

具体的に言うと、「<」、「>」、「&」、「"」などの記号文字のことです。

 

と言われても、わかりにくいと思うので実例をご覧ください。

 

<?php
$str = "<a href='test'>Test</a>";
echo $str; //実行結果:Test(にハイパーリンクがついたもの)
echo htmlspecialchars($str, ENT_QUOTES, UTF-8); // 実行結果(ブラウザ上):<a href='test'>Test</a> 実行結果(実際):&lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
?>

 

【解説】
簡単かつ具体的に言うと、htmlspecialchars()は【'&' (アンパサンド) を '&amp;' 】に、【 '<' (小なり) は '&lt;'】にしています。

 

1行目:$strは変数です(こういうときによく使います)ので、strの部分は何でも構いません。strはstring(文字列)の略だと思います。
HTMLでよく使うdivタグを入れてみました。
2行目:$strをそのままブラウザ上に表示します。ブラウザ上で表示する際、divタグがあるので、その部分はHTMLの要素と見なされます。
よって画面上にはdivタグは表示されません。
3行目:$strをhtmlspecialchars()関数にかけて、$strという変数に入っているものをechoでブラウザ上に表示させます。

 

htmlspecialchars()関数が、aタグやシングルクオートを文字列と見なすように変換してくれるので、(ブラウザ上では)そのまま表示されます。

 

また、第二引数の『ENT_QUOTES』は、シングルクオートとダブルクオートを両方とも変換してくれます。

これを省略した場合、ダブルクオートは変換しますがシングルクオートは変換しませんので気をつけてください。

 

第三引数の『UTF-8』(別の文字コードにした場合はここを変更)も付けておく方が無難です。

 

htmlspecialchars()がよく使われる場面

この関数がよく使われるのは、問い合わせフォームなどユーザー入力が必要な場面において、です。

 

たとえば、住所や名前を入力するフォームに、

 

<?PHP
$str = "<script>alert('testtesttesttesttest');</script>";
htmlspecialchars($str);
?>

 

のように埋め込んだとしたら、(場合によっては)このプログラムが動いてしまいます。

(※決して悪用しないようにお願いします)

 

ですので、フォームからの値を受け取る場合は、必ずこのhtmlspecialchars()を通すようにしましょう。

 

 

まとめ

便利な文字列関数は他にもいくつかありますので、引き続き紹介したいと思います。

最後までご覧いただき、ありがとうございました。

 

 

【関連記事】

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

 

 

 

杉尾成行 顔写真

この記事を書いた人

杉尾成行

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

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

前職:ライター、小説家

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

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


カテゴリー

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