<br />区切りで出てくるんだもんよ。
素の動作
こうすると
<?php usces_error_message(); ?>
こうなる
パスワードが一致しません。<br />
メールアドレスが不正です。<br />
名前が不正です。<br />
郵便番号が不正です。<br />
市区郡町村を入力してください。<br />
番地を入力してください。<br />
電話番号を入力してください。<br />
やりたいこと
デフォルトテーマだと<p>に入っているし、まあこれで要件的にもいいんだけど、見栄えのためにリスト形式で出したい。
<ul class="error_list">
<li>パスワードが一致しません。</li>
<li>メールアドレスが不正です。</li>
<li>名前が不正です。</li>
<li>郵便番号が不正です。</li>
<li>市区郡町村を入力してください。</li>
<li>番地を入力してください。</li>
<li>電話番号を入力してください。</li>
</ul>
そういう話。
やっていく
echo動作をブロックしつつ中身を抽出して整形。
function output_error_messages_as_list() {
ob_start();
usces_error_message();
$raw_output = ob_get_clean();
$lines = explode('<br />', $raw_output);
echo '<ul class="error_list">'."\n";
foreach ($lines as $line) {
$line = trim($line);
if (!empty($line)) {
echo '<li>' . htmlspecialchars($line) . '</li>'."\n";
}
}
echo '</ul>'."\n";
}
これで出力。
output_error_messages_as_list();
関数にしてるけど変数でもいいような。
ポイント
echoを入れなきゃ好き勝手に中身をいじれるんだけど、上記にもある通り元の関数自体がechoの性質も持ってるからそのまま扱うことができない。
なので、ob_startとかob_get_cleanを使って扱えるようにしてある。
変数化した後は好きに料理すればいいわけで、よくある感じに<br />を区切り文字として配列に分割して<li>ではさんで出力するという流れ。
<br>じゃなくて<br />である点に注意。
いまだにXHTML形式は好まれているようですね。
ChatGPT様々だという話
今回の内容はChatGPTで出した。
質問すれば返してくれる。
自分ごとで質問すればその形で出してくれる。
なので応用の必要がなく、最適解を引っ張ってこれたりする。
コアな内容であれWEBで検索するよりも結論に至るまでがめちゃくちゃ早いし、この1年でだいぶ使いやすくなったし、自分でも誰でも今後はガンガン活用しまくるんでしょうねという気持ちになってる。
じゃあもうWEBは不要なのかといえばそうでもない。
うまく質問できないとほしい答えは返ってこないので、そのへんの基礎力がないならWEBの検索からでないと得られにくい感じがある。
なので、使い分けかなと思う。
コメント