エラー表示の関数とシングル・ダブルクォートについて

今日はエラー処理とか、シングル・ダブルクォートについて等。

<?php
//〜略
elseif(isset($name) || isset($com) ){
    //エラーメッセージが複数ある場合を考えて$error_msgという配列に文字を入れる
    $error_msg[]="名前とコメントは必須です。";
    error_show($error_msg);
    }

//〜略
//エラー表示関数
function error_show($error_msg){
    echo '<span style="color:red">エラー!</span>';
    echo "\n";
    echo '<ul>';
    foreach ($error_msg as &$value) {
        echo '<li> '. $value .' </li>'; 
            echo "\n";
    }
    echo '</ul>'; 
    echo "\n";
    //以下は別にいらなかったかな…
    unset($value);
    $error_msg =array();
}
?>

こんな感じで処理していきたいと思う。エラーメッセージが複数ある場合を考えて$error_msgという配列に文字を入れる…のがちょっと考えたところ。あと、最近知った事ですが…

<?php
// シングルクォートの中のダブるクォートはおk
echo '<a href="bbs.php">どこか</a>';
// シングルクォートの中の\nはおかしな表示になる
echo '<a href="bbs.php">どこか</a>\n';
// ダブルクォートで\nがちゃんと改行に
echo "\n";
// 同様に$valueとかの変数もシングルだとそのまま表示されてしまう
echo '<a href="bbs.php">$value</a>';
// .を使ったりとか
echo '<a href="bbs.php">' .$value. '</a>';

?>

シングル・ダブルの使い分け今まで意識してなかったので以後気をつけまする。
他にもテクニックがあったと思うけどめんどいので見つけたら次の機会にでもメモすることにします。

続・文字数エラーとシングルクォート等

いつまでもヘタクソなphpのコードばかり晒してごめんね><
次くらいはちょっと面白い記事書きますんで〜
えーと。タイトル通りなんですが、エラーメッセージを配列に入れるのは挫折しました、っていうか効率悪い。

<?php
//文字数チェックユーザー定義関数
function len_check($a , $b){
    global $error_msg;
    $len = mb_strlen($a);
    if($len > $b){
        $error_msg[]="文字が多過ぎます。";
        error_show($error_msg);
        }
    }

こんなの作って名前やコメントの変数で試したんだけど二重三重に実行されたり結局投稿されたりでうまくいかない。
またも他の人のソース(レッツphpさん)拝借したら…

if(strlen($name) > $maxn){ error("名前が長すぎますっ!"); }

直接、引数にメッセージ入れてる。で、関数の最後に

exit;

エラー出したら投稿できないんだから当然だわな。
そっか、exit;でスクリプトが中止されるんだ。
バカだから今までbreak;とかで止めようとしてエラー出てた。break;はループ文の時だよね。
冗長になるんで書き直したソースは載せないけどこっそり修正しといた。

そして、シングルクォートの件。
シングルで囲った変数を変数として表示させる方法が以前に書いた以外にもありました。
中カッコで囲む。

<?php
echo '<a href="bbs.php">{$value}</a>';
?>

こっちの方が使いやすいかも

掲示板は後はロック処理終われば公開予定。まだまだ機能付け足したいけど
本当にキリが無いね。奥深いです。でも勉強になります。

ではまた明日。