Copicode 日本語トップ

PHPでお知らせ一覧を安全に表示する前に確認すること

Webサイトでよく見かける「お知らせ」や「ニュース」の一覧。新しい情報が追加されるたびに手作業でHTMLを更新するのは大変ですよね。実は、PHPのforeachループを使えば、そんな手間のかかる作業を自動化し、いつでも最新の情報を表示できる動的なリストを簡単に作成できます。

この記事では、PHPのforeachでお知らせ一覧を表示する方法に加えて、長いタイトル、空の配列、リンクURL、DBから取得した本文、AIが出したコードを本番へ入れる前の確認を整理します。お知らせ一覧はトップページや管理画面に出やすいため、1件だけ表示が崩れても目立ちます。安全な表示の型を先に決めてから実装しましょう。

確認日: 2026年5月20日

このページで整理できること

  • foreach で同じHTMLをデータ件数分だけ表示する基本。
  • 空配列、長いタイトル、リンクURL、日付表示で崩れやすい場所。
  • htmlspecialchars() を使って一覧表示を安全にする理由。
  • 配列一覧からDB一覧、CMS風のお知らせ管理へ進める前の確認順。
  • AIやCodexに一覧表示コードを相談する時に伏せる情報。

最初に分けること

作りたい一覧 先に確認すること 次に読むページ
固定配列のお知らせ一覧 空配列、1件、複数件、長いタイトルを試す PHP配列で表示する基本
本文の抜粋付き一覧 HTMLタグを途中で切らず、表示直前にエスケープする PHPで安全な抜粋文を作る方法
DBから出す一覧 接続情報を分け、表示時はDB本文も信用しすぎない PDOでデータを一覧表示する基本
AIが作った一覧コード 実データや管理画面URLを貼らず、サンプル配列で相談する AIコード安全公開の入口

PHPを動かすための準備(開発環境)まだXAMPP「ザンプ」を構築してない方は、【PHP入門】XAMPPのダウンロードとインストール方法を徹底解説!を参照してください。 インストール後、指定されたフォルダ(`htdocs`など)にPHPファイルを置けば、準備は完了です!

先に確認:foreachで作る一覧の使い道

foreachは「同じ形のHTMLをデータ件数分だけ出す」時に使います。お知らせ一覧だけでなく、商品一覧、ブログカード、管理画面の一覧にも応用できます。

1. 基本のキ!PHPの配列とforeachループ

まずは、`foreach`が何をするものなのかを理解するために、その相棒である「配列」から見ていきましょう。

配列とは、複数の値をまとめて格納できる、箱のようなものです。例えば、お知らせの情報を「日付」と「タイトル」のセットで管理したい場合、以下のように配列を作ることができます。

<?php
// お知らせ情報を格納した配列
$news_items = [
  [
    "date" => "2025-07-03",
    "title" => "夏季休業のお知らせ"
  ],
  [
    "date" => "2025-07-01",
    "title" => "新サービス「〇〇」を開始しました"
  ],
  [
    "date" => "2025-06-20",
    "title" => "ウェブサイトをリニューアルしました"
  ]
];

// 配列の中身を確認(デバッグ用)
print_r($news_items);
?>

この配列という「箱」から、中身を一つずつ取り出して処理するのが`foreach`ループの役目です。構文はとてもシンプルです。

foreach (配列 as 取り出した要素を一時的に入れる変数) { ...処理... }

この構文を使い、先ほどの配列からタイトルだけを順番に取り出して表示させてみましょう。

<?php
$news_items = [
  ["date" => "2025-07-03", "title" => "夏季休業のお知らせ"],
  ["date" => "2025-07-01", "title" => "新サービス「〇〇」を開始しました"],
  ["date" => "2025-06-20", "title" => "ウェブサイトをリニューアルしました"]
];

// 配列から1件ずつお知らせ情報を取り出す
foreach ($news_items as $item) {
  // 取り出したお知らせのタイトルを表示する
  echo $item['title'] . "\n";
}
?>

このように、`foreach`は配列の中の要素がなくなるまで、自動的に処理を繰り返してくれます。これが動的リスト生成の心臓部となります。

2. 実践!foreachでお知らせ一覧を作成する

それではいよいよ本題です。先ほどの配列と`foreach`ループを使って、Webページに表示できるHTML形式のお知らせ一覧を作成します。以下のコードは、HTMLとPHPを組み合わせた最も基本的な形です。このままファイルにコピペすれば、ブラウザで表示を確認できます。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>お知らせ一覧</title>
    <style>
        body { font-family: sans-serif; line-height: 1.6; padding: 20px; }
        .news-list { list-style: none; padding: 0; border-top: 1px solid #ccc; }
        .news-list li { padding: 15px 10px; border-bottom: 1px solid #ccc; }
        .news-date { font-weight: bold; margin-right: 1em; color: #555; }
    </style>
</head>
<body>

    <h1>お知らせ</h1>

    <?php
    // お知らせ情報を配列として用意
    $notices = [
        [
            "date" => "2025-07-03",
            "title" => "夏季休業のお知らせ"
        ],
        [
            "date" => "2025-07-01",
            "title" => "新サービス「〇〇」を開始しました"
        ],
        [
            "date" => "2025-06-20",
            "title" => "ウェブサイトをリニューアルしました"
        ]
    ];
    ?>

    <ul class="news-list">
        <?php foreach ($notices as $notice): ?>
            <li>
                <span class="news-date"><?php echo htmlspecialchars($notice['date']); ?></span>
                <span class="news-title"><?php echo htmlspecialchars($notice['title']); ?></span>
            </li>
        <?php endforeach; ?>
    </ul>

</body>
</html>

このコードのポイントは、`