カテゴリー ‘ PHP

PHPで文字化けせずにメールを送信する方法

PHPでメールを送信する方法を紹介したいと思います。

サンプル

// 言語の設定
mb_language("ja");

// 文字コード設定
mb_internal_encoding("UTF-8");

// 送信先のメールアドレス
$mail_to = "[email protected]";

// メールのタイトル
$subject = "タイトル";

// メール本文
$message = "メールの内容";

// 送信者のメールアドレス
$mail_from = "From:".mb_encode_mimeheader("名前")." <[email protected]>";

// メール送信
mb_send_mail($mail_to, $subject, $message, $mail_from);

注意点

上のサンプルで問題なくメールの送信はできるのですが、ちょっとだけ注意した方がいいことが2点あるので補足です。

 

  1. 日本語のメールを送信する場合は、必ず言語の設定と内部エンコーディングの設定をする必要があります。
    // 言語の設定
    mb_language("ja");
    
    // 文字コード設定
    mb_internal_encoding("UTF-8");

  2. 送信先メールアドレスに日本語を使用する場合は、必ずmb_encode_mimeheader関数を使ってエンコードする必要があります。
    // 送信者のメールアドレス
    $mail_from = "From:".mb_encode_mimeheader("名前")." <[email protected]>";

 

Share on Facebook

PHPからMicrosoft SQL Serverに接続する時の正しいやり方

CodeZineに「PHPからSQL Serverへの正しい接続方法」という記事が出ていました。

PHPからSQL Serverに接続する機会はあまり多くはないでしょうが、絶対にないというわけではないので。

 

この記事では、結構詳しくまとまっているので、かなり参考になると思います。

Share on Facebook

PHPで配列の中身を全て出力する関数

PHPで配列の中身を全てみたい場合があると思います。

for文で回して、出力するという方法もありますが、わざわざコードを書くのって面倒ですよね。

 

そんな時に便利に使えるprint_rという関数がPHPには用意されていて、この関数を使うと、配列の中身を全て出力することが出来ます。

<?PHP
  // 配列を作成
  $array_test = array("りんご", "なし", "バナナ", "いちご");

  // 配列の中身を出力
  print_r($array_test);
?>

上のソースを実行すると、以下のコードが出力されます。

Array
(
    [0] => りんご
    [1] => なし
    [2] => バナナ
    [3] => いちご
)

 

他の種類の配列でも試してみます。

連想配列

<?PHP
  // 連想配列を作成
  $array_test = array("Apple" => "りんご", "Pear" => "なし",  "Banana" => "バナナ", "Strawberry" => "いちご");

  // 配列の中身を出力
  print_r($array_test);
?>

Array
(
    [Apple] => りんご
    [Pear] => なし
    [Banana] => バナナ
    [Strawberry] => いちご
)

多次元配列

<?PHP
  // 多次元配列を作成
  $array_test[0][0] = "りんご";
  $array_test[0][1] = "なし";
  $array_test[0][2] = "バナナ";
  $array_test[0][3] = "いちご";
  $array_test[1][0] = "水";
  $array_test[1][1] = "コーラ";
  $array_test[1][2] = "ファンタ";
  $array_test[1][3] = "青汁";

  // 配列の中身を出力
  print_r($array_test);
?>

Array
(
    [0] => Array
        (
            [0] => りんご
            [1] => なし
            [2] => バナナ
            [3] => いちご
        )

    [1] => Array
        (
            [0] => 水
            [1] => コーラ
            [2] => ファンタ
            [3] => 青汁
        )

)

多次元の連想配列

<?PHP
  // 多次元の連想配列を作成
  $array_test["Fruit"]["Apple"] = "りんご";
  $array_test["Fruit"]["Pear"] = "なし";
  $array_test["Fruit"]["Banana"] = "バナナ";
  $array_test["Fruit"]["Strawberry"] = "いちご";
  $array_test["Drink"]["Water"] = "水";
  $array_test["Drink"]["Cola"] = "コーラ";
  $array_test["Drink"]["Fanta"] = "ファンタ";
  $array_test["Drink"]["GreenJuice"] = "青汁";

  // 配列の中身を出力
  print_r($array_test);
?>

Array
(
    [Fruit] => Array
        (
            [Apple] => りんご
            [Pear] => なし
            [Banana] => バナナ
            [Strawberry] => いちご
        )

    [Drink] => Array
        (
            [Water] => 水
            [Cola] => コーラ
            [Fanta] => ファンタ
            [GreenJuice] => 青汁
        )

)
Share on Facebook

年齢を簡単に計算する方法(VB.NET、VB6、VBA、PHPのサンプル)

年齢計算をする方法は色々ありますが、割と簡単に計算する方法を紹介します。

計算方法

(現在日 – 誕生日) / 10000

上記の小数点以下を切り捨てたものが年齢になります。

現在日と誕生日は、数値のみの形式に変換します。

例)2010/11/11 → 20101111

 

 ソースのライセンスはGPLとします。

VB.NETのサンプル

System.Math.Floor((Integer.Parse(Now.ToString("yyyyMMdd")) - Integer.Parse(Date.Parse("1980/01/01").ToString("yyyyMMdd"))) / 10000)

VB6、VBAのサンプル

 

Int((CLng(Format(Now, "yyyymmdd")) - CLng(Format(CDate("1980/01/01"), "yyyymmdd"))) / 10000)

ちなみに、VB.NETでも上記の方法で年齢計算をすることが出来ます。

PHPのサンプル

floor((date("Ymd") - date("Ymd", strtotime("1980/01/01"))) / 10000);

UPDATE:

コメント欄よりご意見を頂きVB6、VBAのサンプルを修正しました。

Share on Facebook

PHPの正規表現でUTF-8を使用する方法

PHPの正規表現でUTF-8を使用するには、内部エンコーディングをUTF-8にしておく必要があります。

mb_ereg系とpreg系ではやり方が違うので、それぞれ紹介します。

mb_ereg

プログラム上から正規表現の内部エンコーディングを変更するには、プログラムの先頭に以下のコードを入力します。このエンコーディングの指定は、mb_ereg系の正規表現に対して有効です。

mb_regex_encoding("UTF-8");

 preg

preg系の正規表現で、UTF-8を使用するには、正規表現オプションに “u” を指定します。以下は、例です。スラッシュの後ろに書いてあるのが正規表現オプションです。

preg_match("/^[A-Z]/u", "ABCD")

PHPの内部エンコーディングを変更

ちなみに、PHPの内部エンコーディングを変更するには、以下の記事を参考にしてください。上記だけではうまくいかない時に指定してみてください。

PHPの内部エンコーディングを変更する方法

Share on Facebook

PHPの内部エンコーディングを変更する方法

PHPの内部エンコーディングを変更するには、以下のコードをプログラムの頭に書きます。例では、内部エンコードをUTF-8に変更しています。

mb_internal_encoding("UTF-8")

Share on Facebook

PHP正規表現チェッカーの処理概要

PHP正規表現チェッカーの内部処理の概要です。

この記事を書いた時点のPHP正規表現チェッカーのバージョンは1.0.3です。

似たようなアプリを作る時に参考になればと思います。

使用言語はPHPで、通信にはAjaxを使用しています。Ajax部分には、prototype.jsを使用しています。

全体

  1. PHPの内部エンコードをUTF-8に変更。(mb_internal_encoding)
  2. 正規表現のエンコードをUTF-8に変更。(mb_regex_encoding)
  3. HTTP出力のエンコードをUTF-8に変更。(mb_http_output)
  4. HTTPヘッダー出力。(Content-Type: text/html; charset=utf-8)

画面表示

  1. オプションをクッキーまたはセッションより取得。セッションに値があればセッションの値を優先。
  2. ユーザーエージェントをチェックし、Operaの場合は”onchange”イベント、Opera以外の場合は”onkeyup”、”onmouseup”を使用。
  3. セッションをチェックし、パターン文字列、置換え文字列、対象文字列に値があれば値を取得。
  4. セッションに値があればその値を元に、正規表現処理を実行。
  5. メインページの表示。1で取得したオプションの反映。実行した正規表現の結果を出力。

正規表現処理(JavaScriptの処理)

  1. パターン文字列、対象文字列に値が入力されているかチェック。どちらかが未入力の場合は以降の処理は行わない。
  2. Ajaxでサーバーにデータを送信してマッチした文字列を取得。
  3. 置換え文字列に値が入っていれば、Ajaxでサーバ・にデータを送信して置換後の文字列を取得。
  4. オプションのマッチグループを表示にチェックが入っていれば、Ajaxでサーバーにデータを送信してマッチグループを取得。

正規表現処理(サーバー側)

  1. 画面上で指定したオプションをセッションに保存。
  2. パターン文字列、置換え文字列、対象文字列をセッションに保存。
  3. 直接、SPANタグで囲うと、出力の為にhtmlspecialcharsでHTMLエンティティした場合、正しく強調表示出来ないので、マーキング用の文字列を作成。例えば、”[Match]“、”[/Match]“等。対象文字列に、マーキング用文字列が含まれる場合、必ず一意になるようにする。
  4. Perl互換の正規表現 (preg)にチェックが入っている場合は、preg_replace関数で正規表現を実行。チェックが入っていない場合は、mb_ereg_replace関数で正規表現を実行。画面上で、オプションが指定されている場合は、オプションを指定。
  5. 1で作成したマーキング用文字列をSPANタグに置き換える。
  6. Perl互換の正規表現 (preg)にチェックが入っている場合は、preg_match_allでマッチグループを取得。チェックが入っていない場合は、mb_eregでマッチグループを取得。

オプション保存

  1. PHPのsetcookie関数で画面上の値をクッキーに保存。保存期間は約2ヶ月間。
Share on Facebook

広告

Facebook

カレンダー

2014年11月
« 5月    
 1
2345678
9101112131415
16171819202122
23242526272829
30  

最近の投稿

アーカイブ