tohokuaikiのチラシの裏

技術的ネタとか。

php

PHPでCSVファイルを書き出す時にBOMを付けて改行コードをCRLFにする

php

Streamってあんまり使わない… こんな感じ。

PHPの可変長引数について、コンストラクタでそのまま渡せるのか確かめた

php

要するに、クラスを継承した時に引数の呼び出し方を変えたくないということなんだけど。 親クラスの __constructの引数の実装を知らなくても良いようにしたいということ。 ダメだったケース

PhpStromでまたリモートxdebugがつながら無い…と思ったらWindows Defenderの設定のせいだった件

php

PhpStormをアップデートしたらxdebugが~~~~とか思ってダウングレードとかしてたのですが。 結局はWindowsファイアウォールのせいだったという。 対象方法 Windowsキー+Sで「Windows security」と検索。 Windowsセキュリティが起動するので、「ファイア…

traitのメソッドをoverwriteしたんだけど、そのoverwriteされたメソッドを呼びたい場合

php

参考にさせていただきました qiita.com ありがとうございました。 試行錯誤してみる まずは基本となるtraitのAと親クラスBaseを定義

PHPの関数内で自己再帰呼び出し

php

できるかな?と思ってテスト…

Debian10でApache2.4+PHP-fpmを動かす

php

PHP5.6を使いたい。参考にしたサイト aptでパッケージ先を追加 普通にapt installできないので、https://packages.sury.org/php/ をパッケージ先に追加する。 GPG認証するパッケージを入れて、キーを追加して、設定ファイルを作る。 # apt install ca-certif…

文字列を規定の区切り文字で区切る(ったり色々する)関数

php

PHPでアクセスしてきたIPアドレスがプライベートアドレスかをチェックする

php

プライベートIPは以下の範囲で 10.0.0.0~10.255.255.255 172.16.0.0~172.31.255.255 192.168.0.0~192.168.255.255 PHPのip2longをかませると 167772160~184549375 2886729728~2887778303 3232235520~3232301055 なので、こんな感じで。

PHPのoutput bufferingの罠

php

別のサーバーだとheaderの前にエラーが出て「Message: Cannot modify header information - headers already sent by」になって終わっちゃうのに、自分のサーバーだとこれが引っかからなくて不思議だなーって思ってたら output.bufferingの値が設定されてい…

PHPで検索キーワードを「”」みたいなクォート区切りを有効にしたGoogleみたいな感じで抜き出す方法

php

Googleで なにか "PHP function" で検索 みたいにすると、"PHP function"っていう文字列で検索してくれるじゃないですか。あのキーワードの取り出し方を知りたいなと思って検索してみたんですが、正規表現一発で取れるものとかなくってしょうがないなーって…

PHPで自分のクラスを見たSingletonの生成

php

今更って感じですが。

Smartyを使ったPHPアプリケーションをgettextで国際化する

php

普通にpoeditとgettextで行けるでしょ、って思ったらそうでもなかったということで。 potファイルの作成 gettextは、「ソースコード」→「.potファイル」→「.poファイル」→「.moファイル」となり最終的には.moファイルを使う。 .potファイルができれば.moファ…

PHPのsetlocaleまとめ

php

前2つのエントリでハマりまくったPHPのsetlocaleのまとめ。*1 Apache CLIの共通の認識 $locale -a を行って表示されないロケールは(つまりOSで有効化されてないロケール)setlocale()しても無効である。 ただし、言語パック(debianだとtask-japaneseパッケー…

PHPのsetlocaleをCLIでチェックばかりしてたらハマった話。

php

まとめ setlocale()の挙動について調べている際に、ApacheからではなくCLIから調べていた。 このCLIの場合の調査は下記の通り。 CLIからPHPを実行してsetlocaleする際は、OSのロケールに依存する。 OSの/etc/locale.genで有効にしてないロケールは、setlocal…

PHPでgettextする際の注意事項というか、setlocaleの罠

php

PHPでgettextを使って国際化しようとかいうとだいたいこういう記事がヒットする。

今更ですが、Composer.pharがinstallとupdateでcomposer.json/.lockを見て何をしているかを図解

php

基本的に、下記の事項を覚えておけば挙動は理解しやすい。 installは.lockを見てその通りに実行する updateは、.jsonを見て依存性を解決する composer.phar install を実行した場合にcomposer.lockの有無による挙動の違い .lockがあれば待ち時間は少なくて済…

LinuxのディストリビューションとデフォルトパッケージのPHPバージョンの一覧

php

ディストリビューション バージョン サポート終了 PHPのバージョン CentOS 5 2017/3/31 5.1 CentOS 6 2020/11/30 5.3 CentOS 7 2024/6/30 5.4 Debian 7 2018/5/31 5.4 Debian 8 2020/4/30 ? 5.6 Ubuntu(LTS) 14 2019/4/30 5.5 Ubuntu(LTS) 16 2021/4/30 7 La…

TCPDFで「右綴じ」を実現する方法

php

TCPDFでもFPDFでもFPDIでもFPDI_TMPLでもなんだかこのあたりの一群のライブラリはよく分かってなかったりしますが・・・・。 そもそも右綴じって? PDFのプロパティでこんな感じです。Acrobatで開いた時のプレファレンス。 英語で言うとBinding Directionで…

PHPでRESTサーバを実装するライブラリLuracast/Restler

php

PHPでRESTサーバを書きたくなった場合、F.Wならそれの下地はあるだろうけどそれ程でも…っていう場合など。 Luracast/Restler 日本語の記事は見つからなかったけど、このライブラリが鉄板っぽいので使ってみる。 https://github.com/Luracast/Restler 以下、…

PHPでコンソールに色付きで出力する

php

元エントリはこちら phpのバッチでターミナル上で色をつける方法 - maru.cc@はてな phpのバッチでターミナル上で色をつける方法 - maru.cc@はてな 関数化と、その色について 確認コード

SimpleXMLElementのファイル限界値があったのでPEAR::XMLRPC2を書き換えてみた話

php

php - How can I handle a huge XML file using SimpleXML but to prevent memory and performance problems? - Stack Overflow で大きいファイルダメっすよって言われてるのだけど、PEARのXMLRPC2がSimploeXMLElement使ってて、ぐぬぬって思ったので調査す…

Re: スマートなコードの書き方12選

php

保守性・管理性が劇的に上がるPHPのスマートなコードの書き方12選 | BULK SERVER blogが盛大に突っ込まれてたのでサラッと自分なりのポイントを記述してみる。上記は既に削除してあるのでこちらから。 http://bulkserver.jp/blog/2014/08/07/php-code/ - 201…

文字の幅を揃えてくれるようにカットしてくれるmb_substr

php

自分がやりたいのは等幅フォントで同じくらいの長さになるようにしたい。 主にレイアウトが重視される場合に。分かりにくいので、たとえばで言うけど、元の文字列として abcdefghijklmnopqrsiuvwxyzABCDEFGHIJKLMNOPQRSIUVWXYZ あいうえおかきくけこさしすせ…

mb_convert_encodingがUTF16を扱うと文字列を壊す件

php

旧聞で恐縮ですが、自分用まとめメモ。 2009/6/7 UTF-16(BOM 付き Little Endian) を mb_convert_encoding() で変換すると文字列が壊れる - t_komuraの日記 にて、komuraさんからの報告。 2009/8/16 komuraさんがPHP-JapanのPHP-devで投稿 PHP-dev - [PHP-de…

ini_get('memory_limit')で得られるファイルサイズを数値にする関数

php

メモ代わり。 134217728, 2G => 2147483648 * @param string * @retval int */ function memoryString2Int($string) { $byte = 0; if (preg_match("@^(\d+)([KMGT])$@", $string, $m)){ $powparam = 0; switch ($m[2]){ case "K": $powparam = 1; break; ca…

WordPressのプラグインをUnitTestする

前の続きWordPress+PHPUnitで検索したところ、 WordPress › Support » Running WordPress tests with PHPUnit もあったのだけど、自分は http://stackoverflow.com/questions/9138215/unit-testing-wordpress-plugins からnb/wordpress-tests · GitHubを使用…

PHPでWindowsのCD-ROMをイジェクトする

php

なんか、CD-ROMをイジェクトさせるスクリプトが流行ってる(?)らしい。 CD-ROM トレイを取り出せるIE用ブックマークレット、「ie-eject.vbs」作った。 - 葉っぱ日記 Big Sky :: CD-ROM トレイを取り出せる vim プラグイン、「eject.vim」作った。ということ…

FTPでバックアップを毎日1週間分取っておくPHPスクリプト

php

クライアントのバックアップ作成です。lftpとzip/unzipコマンドが必要。 これを毎日まわしておけばOK. #!/usr/bin/php

前方一致・後方一致・NOT LIKEに対応したEthnaのAppSQL

AppSQL::getCondition()をこんな感じで変更。 OBJECT_CONDITION_LIKE_R OBJECT_CONDITION_LIKE_L OBJECT_CONDITION_NOT_LIKE が使える。

httpd.confからDocumentRootを取るPHPスクリプト

php

サーバー名が$_SERVER['SERVER_NAME']で分かっていること前提。