php

strtotimeのまずい点

php

3/31に3月を-1 monthした場合、2月にならない3/31 を -1 month -> 2/31 -> 2/28 + 3 -> 3/3 が帰ってくる↓も。基本的に月末はまずい 5/31 -> 5/1 7/31 -> 7/1 10/31 -> 10/13/31に+1monthすると5/1になる。(3/31+1m -> 4/31 -> 4/30+1d -> 5/1)mktime使う…

配列にキーがあるかどうかを調べたいときは、issetではなくarray_key_existsを使う

php

issetはキーがあってもnullだとfalseになるのでその場合は、array_key_existsを使う。 if (array_key_exists("key", $val)) { echo "exists"; } 最初あまりに使っていなくて、array_key_exists($val["key"])とかやってた。あほだ。

PHPで取得したXMLをブラウザでそのままツリー表示したい

php

下記のようにContent-typeをxmlにしないといけない $xml = file_get_contents($xml_get_url); header('Content-type: application/xml; charset=UTF-8'); echo($xml);

PHPでスレッド処理

php

curl_multi系の関数を利用するとphpでスレッド処理っぽいことができるらしい。試してはいないけど。参考サイト PHPでマルチスレッド(バックグラウンド処理)を実現する方法 - EC studio 技術ブログ

ajaxのアクセスしか許可していないサイトへPHPでアクセスする方法

php

ajax通信する際、ブラウザが自動でヘッダーに下記を付与するため、 一般的には下記がヘッダーに含まれているかどうかでajaxによる通信かどうかを判断する。 X-Requested-With:XMLHttpRequest なのでphpで上記のヘッダーを偽装してしまえばajax通信でなくとも…

phpで文字列から数値のみを抜き出す

php

phpのfileとfile_get_contentsとreadfileの違い

php

どれもfopenと違ってファイル内容を一括で読み込む点は同じ それ以外の違いについて fileは配列を返す(行末の改行は除去されないので注意) file_get_contentsは文字列を返す readfileは標準出力する ファイルが無い場合はWarningになるので、@fileとかにする…

PHPでの時間の比較はstrtotimeを使うこと

php

if ('6:44:39' <= '10:44:40') echo "ok";↑のプログラム、OKになると思いますか? 実はokになりませんので注意。 時間の比較はstrtotimeを使うこと。 if (strtotime('6:00:00') <= strtotime('10:00:00')) echo "ok";以下検証

isset()はnullもfalseを返す

php

つい忘れてしまうのでメモ。何も考えずに添字の有無チェックに使わないよう注意。 //こんな感じでチェックすればissetでfalseになっても同じnullだから良いかも $arr = array('a'=>1,'b'=>2,'c'=>null); $var = isset($arr['c']) ? $arr['c'] : null; 定期的…

utf8を使う場合のphp.ini の設定

php

デフォルトのままだとメールで文字化けするので下記設定を行う [mbstring] mbstring.language = Japanese mbstring.internal_encoding = UTF-8 mbstring.http_input = auto mbstring.http_output = UTF-8 mbstring.encoding_translation = Off mbstring.dete…

メール送信の文字化け対応

php

UTF8で記述された丸囲み数字(①)やローマ数字(Ⅰ)をメール送信の際にJISに変換しようとすると、JISがそれらの文字に対応していないため、文字化けが発生する。 それらの文字列を使わないようにするのがベストだけど、そうもいってられないケースの場合は、下記…

array_merge と +演算子の挙動

php

array_mergeと+演算子の挙動を理解していなかったのでメモ。 array_mergeの特徴 キーが数値の場合、0からに振りなおすため、同じキーでも追加する キーが文字列の場合、キーを保持するが同じキーは上書く +演算子の特徴 キーが数値でも文字列でもキーを保…