ど素人から毛を生やす。<延>

PHP

[PHP]受信したメールがMIMEエンコードされている場合。

前回、メール件名の文字列がMIMEエンコードされていた場合の対応を考えたわけですが、じゃあメール本文についてはどうするのが最適解よ??となるわけです。

MIMEヘッダの文字列には「=?utf-8?Q?」のように文字セットやエンコード方式が含まれているため正確に判定してデコードできますが、通常はそういった情報が含まれないので…、取り敢えず文字列から検出してみましょうか。

var_dump(mb_detect_encoding('=3D=E3=81=A9=E7=B4=A0=E4=BA=BA'));
	//string(5) 
... 全文を読む »

[PHP]受信したメールの件名が文字化けしている場合。

どもです。
PHPにて、自身のサーバからメールを取り込んでなんやかんやする旧いシステムの改修を行っていました。

すると、届いたメールの本文が文字化けしておりました。

ど4Rotoから毛を生やす(*´▽`*)
... 全文を読む »

条件によって条件式を変えたかった話。

どもです。

条件によって条件式が変わるが、trueのときに通る処理は同じものとしたい。

無名関数を使えばできるのかな?
と思ったが、できなかった。

//失敗例
... 全文を読む »

ifで分岐させる二つの処理が9割共通する場合

どもです。

ifで分岐させる二つの処理の9割が共通する、ということであれば、

if(☆☆){
	//共通処理
	//☆☆専用の処理
... 全文を読む »

PDOで大量のデータをSELECTしたらメモリリークになったので、非バッファモードで実行する。

どもです。

PHP7時代のMySQL利用といえばPDOですが、PDOを用いて大量のデータを取得しようとしたところ、メモリリークが発生しました。

PHP Fatal error:
... 全文を読む »

MySQL-PHP-HTML の文字列保存・表示備忘録

どもです。
textareaやinputで自由入力できるようにすると、クォーテーションや特定のhtmlタグを入れたときに、処理や表示がバグったり、クロスサイトスクリプティングの被害に遭ったりします。
回避のための処理をいちいち調べるのも面倒なので、備忘的にまとめておくことにします。

PHP←→MySQL

//PHP→MySQL
... 全文を読む »

PHPとjsで浮動小数点誤差問題と闘う

どもです。

ウェブシステム上でお金の計算をしたい。
となれば、厳密な数値を算出する必要があります。

が、一般的にコンピュータ計算では浮動小数点による小数計算誤差問題... 全文を読む »

FTPに同名ファイルが無ければ新規作成、あれば追記

どもです。
PHPでFTPに接続し、出力ファイルと同名ファイルが無ければ新規作成、あれば追記がやりたかった。


//ログイン
$ftp_stream = 
... 全文を読む »

「PORT IP is not same as」されたらパッシブモードにしてみる。

どもです。

某所のFTPにCSVをアップするプログラムを移植していたところ、実は対象がFTPSだったことが判明。
急いで直します。

$conn_id =
... 全文を読む »

array_search()やin_array()する前には、ちゃんとarray_map('trim', $array)するんだぞ!ってメモ。

どもです。
しょーもないことでハマったので備忘。

外部から貰ったCSVを取り込むのに、その項目が何列目にあるかをarray_search()で照合しようとしたら、特定の項目でfalse食らってしまったわけですね。

array_search()でやらかし易いミスといえば、

・第三引数にtrueを設定しないことで、文字列型と数値型の比較になってしまう。... 全文を読む »

file_get_contents()はhttpでないと持ち帰るものが変わってしまう?

どもです。
file_get_contents()に関する備忘録。

PDFを生成し、添付したメールを送信。そのためには作成したPDFをいちど取得しなければなりません。
しかし使用しているPDF作成ライブラリの仕様として、header()を変更してechoしてしまいます。
このため、include()でなくfile_get_contents()を使って生成データを「取得」することが求められます。... 全文を読む »

PHPでファイルをダウンロードさせようとしたら空の実行ファイルがダウンロードされた事案のたぶんレアケース。

どもです。

DBからcsvをダウンロードするphpを移植したら、空の(実行ファイル名).phpがダウンロードされてしまう事象が起きました。
開発や検証中にはそのような事例は一度も無かったのですが、はて。

この原因ですが、端的に言えば何も出力できないのに出力しようとした... 全文を読む »

MySQLから取り出した「日付データがあるとき」の条件分岐を、できるだけ最短の記述で行いたい。

どもです。

PHPで日付データがあるとき、の条件分岐をしたい。

このとき、厳密な日付フォーマットチェックを行いたいのであれば、DateTimeクラスを用いるのが妥当です。
参考サイト:
[Qitta]【PHP】DateTimeクラスでcheckdate()より汎用性のある日付チェックを行う... 全文を読む »

MySQLをPHPでSELECTしたとき、resource型で保持して使用するときにwhileするのと一度配列にぶち込んでforeachするのとで、どれくらい負荷と速度に差があるのか調べてみた。

どもです。

つい昨日、こんなことを呟きました。

膨大な行のMySQLをPHPでSELECTしたとき、resource型で保持して使用するときにwhileするのと一度配列にぶち込んでforeachするのとで、どれくらい負荷と速度に差があるのか知りたい。
いや前者の方が良いのはわかるんだけど!可能なら後者でいきたいんだ!

ということで、調べます。... 全文を読む »

FTPS中のファイルを更新日時順で取得したかった話。

どもです。

FTPS上にアップされたCSVをDBに落とすプログラムを作成していたのですが、このときにファイル名は問わないという縛りがあり、では何を基準に複数ファイルがあったときの処理順を定めるべきか。

普通に考えたらファイルの更新日時かアップロード日時ですな。
ファイル更新日時の昇順といたしましょう。

さて、どうすればそれが適うのか。... 全文を読む »

PHP4サーバーにXML/ParserをインストールしたらFatal errorになった話

どもです。

PHP4のサーバーでXMLの読み取りを行いたく、【Pear】Package Information: XML_Serializer... 全文を読む »

一定文字数、一定バイト数で文字列を分割する的なアレ。

どもです。
一続きの文字列を、一定の文字数またはバイト数で分割する備忘録。


//①文字数で分割する場合
$str = 
... 全文を読む »

str_replace()にNULLを突っ込むと…

どもです。

仕事でちょっとヘマやらかしまして、ちょっと凹んでます。
まぁ失敗談は置いておいて、その過程で見つけてちょっと驚いたstr_replace()の話。

str_replace()にNULLを入れるとどうなるか、です。


var_dump(str_replace("a", 
... 全文を読む »

wkhtmltopdfで明朝体フォントを指定したら、全く違うフォントで出力された話。

どもです。

ウェブサイト上でPDFファイルを作成する手段はいくつかありますが、今回は「wkhtmltopdf」について。

こいつが既に導入されているサイトで、新たなPDF生成システムを作ることに。
サンプルが明朝体だったので、いつものノリで... 全文を読む »

Eclipseで勝手に変数の宣言元に跳ぶのをどうにかしたい。

どもです。
Eclipseは開発のお供ですが、機能が多すぎるのも玉に瑕です。

この頃気になっていたのが、ソースのコピペをしようとした途端、変数の宣言元に意図せずジャンプしてしまう頻度が高いこと。... 全文を読む »