揮発性のメモ2

知識をメモ書きしておく

PHP

配列で添え字がダブったとき

PHP

ランキング参加中PHPランキング参加中プログラミング1は特に被りやすい 2, 1=>3, "1"=>4, 5]; print_r($a); Array ( [0] => 0 [1] => 4 [2] => 5 )

phpでマージソート

PHP

2つのテキストファイルをマージソート

PHPで、コマンドラインでもセッションを使う

PHP

PHPで、WEBアクセスからもCLIからもどちらからも同じセッションファイルを触りたい。 セッションの保存パスは session.save_path に書いてある。 WEBからのアクセスのときは、なんか php-fpm とかが勝手に/var/lib/php/session にしている 一方コマンドライ…

PHPでBASIC認証を受け付ける。 wgetでテストする。

ランキング参加中プログラミングランキング参加中PHPこれの焼き直し www.php.net BASIC認証の基本的な動き 基本的に、BASIC認証は2回アクセスが来る。 1回目は認証なし。サーバは一旦 401 で突っ返す。 2回目でBASIC認証が来る。BASIC認証ではリクエストヘ…

PHPで、空の変数にプロパティを追加すると エラーになる

PHP

ランキング参加中プログラミングランキング参加中PHP a = "hello"; print_r($o); こういうプログラムを実行すると、5.xや7.xの頃はエラーではなくWarningどまりだったが 8.xではすべてFatal errorになった。 PHP7.xのとき Warning: Creating default object …

MySQLで、データベースにバイナリデータを保存する

MariaDBで、データベースに画像ファイルを保存する。 是非は問わない。 テーブルの編集 LONGBLOB とかいう型のカラムを追加する ALTER TABLE photo ADD COLUMN bin LONGBLOB; BLOBは 64KBまでのバイナリ、LONGBLOBは 4GBまでのバイナリが入る MariaDB - What…

EUCに無い文字2

①②③、㌔㍉、㎞㎜ などは EUCJPに無い文字が EUCJP-MS, EUCJP-WIN にはある。 これらの文字を含んだテキストは iconv で変換可能 元テキスト EUCJP⇒UTF8変換 iconv -c -f EUCJP -t utf8 /tmp/kishu.txt EUCJP-WIN⇒UTF8変換 iconv -c -f EUCJP-WIN -t utf8 /tm…

PhpStormで、短いオープンタグを許す

PhpStormで、Short open tag を許可する

PHPで、プロパティを全部見る

PHP

private と protected

PHP

今日はprivateとprotectedを間違えて大変だった name() ."\n"); } } class B extends A { private function name(){ return "Bです"; } } $a = new A(); $a->printname(); // Aです $b = new B(); $b->printname(); // Aです ※Bのつもりだった pr…

PHP8.1で "Deprecated: ucfirst(): Passing null to parameter #1 ($string) of type string is deprecated in"

PHP

PHP8.1で既存のプログラムを動かすと、Deprecated(非推奨)のエラーがやたら出る。

PHPで、設定ファイルがうまく読まれてないことを知る

PHP

PHPで設定ファイルを分けて書いているとき、設定ファイルがちゃんと読まれているかどうか確認する。 設定ファイルは文法エラーがあると、そこでそのファイルの読込みを終了して次のファイルに移る。 よって、エラー行以降は反映されないので中途半端に設定さ…

strtotime()はYYYYMMDDhhmmssを理解する

PHP

PHPのstrtotime()は日付っぽい文字列を入れるとUNIXTIMEにしてくれる便利な関数 PHP: strtotime - Manual理解してくれる書式はここにまとまっている www.php.net 書いてないけど YYYYMMDDhhmmss な形式の文字列もセーフ

PHPで、POSIX関数がエラーになるとき

PHP

CentOS7, PHP5.4 PHPで、POSIX関数がエラーになるとき、posix関数が入ってないのでインストールする $ sudo yum install php-process

PHPのシステム関数で、hexdumpの出力結果同士のdiffをとる

PHP

コマンドの出力結果同士の差分は、bashで プロセス置換 というワザを使う。 diff <(hexdump -C /tmp/a.bin) <(hexdump -C /tmp/b.bin) bash でコマンドの実行結果をファイルとして扱う - Diary bashのプロセス置換で遊んでみよう! | Raccoon Tech Blog [株…

array_splice() を使うと添字が振り直される

PHP

注意: array の配列の数値添字は保存されないことに注意しましょう。 PHP: array_splice - Manual 配列が変化しようとしまいと関係なく、とにかく array_splice() を通すだけで添字は振り直される 1, 2=>2, 4=>3]; print_r($a); array_splice($a, 10); print…

json_encode()で、private変数は出力されない

PHP

変換される値がオブジェクトの場合、 デフォルトでは public としてアクセス可能なプロパティのみが含まれます。 PHP: json_encode - Manual #!/usr/bin/php -q

PHP5.6でZipArchiveを使うと日本語ファイル名が化ける問題

Windowsで作ったZIPファイルはファイル名がSJISであり、これをLinuxのPHPでファイル名をUTF-8にして解凍したい。 という話 blog.narazaki.info PHPでZipArchiveを使うと、statIndex() が勝手に憶測で文字コード変換をするために文字コードが破壊されてしまう…

静的メンバ変数に、変数名の文字列でアクセスする

PHP

動的メンバ変数に 変数名の文字列でアクセスするには、$chinko->$name とかみたいに 適当に矢印の先に変数を指定すればその変数に入ってる文字列を変数名と見なしてくれる。 hoge ."\n"; // 普通に hogeにアクセスできる $name = "hoge"; print $chinko->$na…

PHPで、配列の最後尾の値を取得する

PHP

array_pop() や end() を使うと配列の最後尾の値を取得できる。 ただし、関数の戻り値を使うことは許されないらしい。どちらも配列を参照して配列自体をいじるため、実体が必要だから https://www.php.net/manual/ja/function.end.php https://www.php.net/m…

xamppのアンインストール

インストール先フォルダにある unsintall.exe を実行でアンインストールされる。ただファイル消すだけなのになんでそんなに時間かかるの? バグった? って思うほど時間かかるので注意する インストールは C:\ にする。 C:\xampp\php\php.exe

PHPで、クッキーにSameSite属性を付ける

PHP

7.3以降で追加されたSameSite属性の設定手段いろいろ php.ini に書く ; Add SameSite attribute to cookie to help mitigate Cross-Site Request Forgery (CSRF/XSRF) ; Current valid values are "Strict", "Lax" or "None". When using "None", ; make sur…

PHPで、ZipArchiveクラスを使えるようにする

容量を減らすためにインストールパッケージをケチっていると、思いもよらない不具合がターゲット機のみで起こる。ZipArchiveを使っているマシンでエラー発生。 ZipArchiveが使えない。 マジかよ $ php -r '$zip = new ZipArchive();' PHP Fatal error: Uncau…

PHPで、foreachでぐるぐる回ってる最中に要素を削除する

PHP

一般的に禁忌というか面倒な 配列をループ中の要素削除 もPHPなら安全 $a) if($a=="dog") unset($list[$k]); print_r($list); print("count = ". count($list) ."\n"); foreachで回って、要素が "dog" だったら削除する Array ( [0] => a [1] => b […

PhpStormで、ウィンドウのタイトルとメニューが一体化してしまったのを直す 3

PhpStormを 2022.1 にバージョンアップしたらタイトルバーがバグったので、直す。 カスタムプロパティの修正 ウィンドウタイトルとメニューが一体化してしまったのは 2019.2 の頃で、この時期はレジストリやカスタムプロパティを修正していた。 レジストリは…

PHPから、UDPでsyslogを投げる

#!/usr/bin/php -q

PHPでエンコードして、JavaScriptでデコードする

漢字とか改行とか記号とか、そういうのをPHPからJavaScriptに渡すときにエンコードしたいとき PHP側で rawurlencode(), JavaScript側でdecodeURIComponent() を使用する。

PHPで、ディレクトリを作成する

PHP

ディレクトリがあろうがなかろうが関係なくディレクトリを作る。 mkdir -p hoge みたいなやつ。

オブジェクトの要素に変数名でアクセスする

文字列を変数名とみなして変数にアクセスするやつ JavaScriptのとき developer.mozilla.org 連想配列扱いできる var a = {b:123}; var text = "b"; console.log( a.b ); console.log( a[text] ); PHPのとき www.php.net 可変変数という仕様でアクセスできる …

if文、for文

if文for文の後ろは単文のみ許可、長くなる時は{ }でくくる というマイルール { は絶対次の行にしない。(関数宣言のときは逆に { を必ず次の行にする) 許さない書き方 /* 見つけ次第直す */ if(a>0) hoge(); for(i=0; i<10; i++) hoge(); /* 書いたやつを地…