PHPで「…」を使って文字列を短縮表示する方法
PHPでは、長い文字列の先頭と末尾だけを残して中間を省略し、「…」でつなげて表示したいケースがあります。例えば、記事の一覧画面などで概要をコンパクトに見せたい場合に便利なテクニックです。
処理の対象となる文字列
まず、次のような文字列を用意します。
$sentence="This is my first PHP program";
期待する出力結果
この文字列から、先頭部分と末尾部分を残して短縮した結果、以下のように表示させます。
This is my first PHP ... gram
実装の考え方
文字列を「…」で短縮するには、strlen()関数で文字列の長さをチェックし、一定の長さ以上であればsubstr()関数を使って先頭と末尾を切り出すという方法が使えます。
- strlen($sentence) … 文字列の長さ(バイト数)を取得する
- substr($sentence, 0, 20) … 先頭から20文字分を切り出す
- substr($sentence, -4) … 末尾から4文字分を切り出す
サンプルコード
<!DOCTYPE html>
<html>
<body>
<?php
$sentence="This is my first PHP program";
if (strlen($sentence) >= 13) {
echo substr($sentence, 0, 20). " ... " . substr($sentence, -4);
} else {
echo $sentence;
}
?>
</body>
</html>このコードでは、文字列の長さが13バイト以上の場合に短縮処理を実行し、それ以外は元の文字列をそのまま表示します。
実行結果
This is my first PHP ... gram
補足:日本語を扱う場合の注意点
上記のsubstr()やstrlen()はバイト単位で動作するため、マルチバイト文字である日本語を扱うと文字化けの原因になります。日本語の文字列を短縮する場合は、代わりにmb_strlen()とmb_substr()を使用することをおすすめします。
if (mb_strlen($sentence) >= 13) {
echo mb_substr($sentence, 0, 20). " ... " . mb_substr($sentence, -4);
} else {
echo $sentence;
}このように条件分岐と文字列切り出し関数を組み合わせることで、シンプルかつ柔軟に文字列の省略表示を実現できます。
-
PHPのstrtok()関数とは?文字列をトークン単位で分割する方法
PHPのstrtok()関数は、文字列をトークン(区切られた部分文字列)に分割するための関数です。指定した区切り文字に基づいて文字列を順番に分割し、トークンを1つずつ取得することができます。 構文 strtok(str, split) パラメータ str − 分割対象となる文字列を指定します。 split − 区切り文字として使用する1つ以上の文字を指定します。複数の文字を指定した場合、そのいずれかが区切り文字として扱われます。 戻り値 strtok()関数は、分割された文字列トークンを返します。これ以上トークンが存在しない場合は false を返します。 ポイント 最初の呼び出しでは元の
-
PHPのstrstr()関数とは?使い方と実例をわかりやすく解説
PHPのstrstr()関数は、指定した検索文字列が対象の文字列内で最初に現れる位置を見つけ、その位置以降の文字列を返すために使用される組み込み関数です。 注意: strstr()関数は大文字と小文字を区別します。大文字・小文字を区別せずに検索したい場合は、stristr()関数を使用してください。 構文 strstr(str, search, before) パラメータ str − 検索対象となる元の文字列を指定します。 search − 検索する文字列を指定します。 before − 省略可能なブール値で、デフォルト値は「false」です。「true」に設定すると、searchパラメ