アナログCPU:5108843109

ゲームと音楽とプログラミング(酒と女とロックンロールのノリで)

('ω') < イザユケエンジニャー

PHP

連想配列で検索したい!!!

PHP

(2018-09-13:書いてるとおりには動いてたけど、実用を考えると破綻してたので、まるっと書き直しました)array_columnを使えないバージョンを使わざるを得ない時用。 使えるならこちらをご参照ください。 今回は以下のような連想配列から検索することを考…

複数の文字列データをカンマ区切りにするけど5データごとに改行する

PHP

関数化した。

PHPでファイルを扱うときのいろいろ

PHP

ファイルの書き込み読み込みやらCSVやテキストがどうやらというのは長くなるので、 ファイル自体の存在とかコピーや削除とかそういうやつ。 ファイルやディレクトリの存在を確認する

PHPでファイルパスを扱うときのいろいろ

PHP

主にファイルパスの文字列をもにょもにょわちゃわちゃしたりするときに使うやつ。 きれいなパスをつくってくれるやつ

JSとPHPでJSONデータを扱う

WEBアプリを作っていると、JSとPHPの間のデータのやり取りなどでJSON形式を使うことが多いので、 JSONを配列にしたり、配列をJSONにしたりする方法をメモ。 PHPで配列をJSONにする json_encodeを使います。 PHP: json_encode - Manual 変換したい配列以外に…

CSV取り込み時に日本語が無視される問題

PHP

初歩的な気がするけど。諸々UTF-8に揃えているつもりなのに、 fgetcsvでCSVを取り込もうとすると日本語が無視される。 ローカル環境(windows/xampp)は大丈夫なのにサーバで動かすとダメ。setlocaleされてないのが原因でした。 とりあえず処理の直前に入れて…

iframeのデメリットを無理矢理消化した実装(JS+PHP+Smarty版)

iframeの二大デメリット 「URLが切り替わらない(常にフレームの外側ページのもの)」 「内側ページのURLを直接叩くとフレームが出ない」 を解決すべく とりあえず↑を検討した後、やっぱ微妙だなと思って PHPとSmartyの力も借りて実装したバージョン。仕組み…

zipファイルを生成する

PHP

PHPでzipファイルを作る機会があったのでメモ。関数化したので次からこれ使おう。 "ファイルパス", 'zip_file_name' => "zip内でのファイル名") * という配列で表す * @param zip_path zipのパス * @return 正常ならtrue、失敗したらfalse */ function make…

ゼロ幅スペースとは

PHP

PHPにて、半角文字以外が含まれるかどうかを判別したく以下コードを書いてたんですよ。 正規表現部分は「!から~までの文字と半角スペース 以外」ですね。 if (preg_match("/([^!-~\s]+)/", $str, $matches)) { var_dump($matches[0]); }その中、こんな出力を…

ローカルのCSVファイルをアップロードして処理

ローカルからCSVファイルをアップロードしてその内容を処理する機能を作ることがあったのでメモ。 といってもアップロード機能自体はめちゃくちゃ簡単だった。エラーチェック系が沼。 HTML <form enctype="multipart/form-data" action="【※】" method="POST"> <input name="userfile" type="file" /> <input type="submit" value="送信" /> </form> これだけ…

特定の文字より手前を切り出す

PHP

別に難しい話とか裏技とかではないですが、 たまに使うのを毎回ガチャガチャ書くのが面倒なので自分のコピペ用に。例えばメールアドレス「hogefuga@example.com」の「@」より前、 つまり「hogefuga」のみを切り出したいときなどに。 $str = "hogefuga@exampl…

配列に要素がなければ追加、あれば何もしない

PHP

例えば以下2つの配列があるとします。 $list_1 = array( 'hoge' => 1, 'fuga' => 2, ); $list_2 = array( 'fuga' => 20, 'piyo' => 30, ); これについて、以下操作をしたい場合。 $list_1になくて$list_2にあるキーに対する要素を$list_1に追加する $list_1…

配列同士・文字列同士を比較し、重複している要素を除く

PHP

例えば以下2つの配列があるとして $list_a = array("a", "b", "c"); $list_b = array("b", "d", "e"); $list_a から、$list_b に含まれている要素を除いて array("a", "c"); という配列にしたい場合、array_diff関数を使えば一発です。 $list_a = array("a",…

プレースホルダのいい感じの作り方

PHP

頭が悪いタイトル。例えば以下のようなクエリを組み立てることはよくあるのですが SELECT ... FROM ... WHERE `id` IN (1, 2, 3, ...) ここ。 IN (1, 2, 3, ...) ここをPHP上で組み立てるのに最初は苦労しましたが、今は以下のように書いています。 $param_l…

mecabとPHPで形態素解析

PHP

そもそも形態素解析とは? 文章を「言語で意味を持つ最小単位」に分割し、それぞれの品詞等を判別する作業。 参考:形態素解析 - Wikipedia 形態素解析すると具体的にどうなるの? 元の文字列 吾輩は猫である。名前はまだ無い。 どこで生れたかとんと見当が…

TwitterAPIを使ってみる

…使ってみたのはもう何年か前なんですけど。 自分用メモが残っていたのでブログに書き起こしておきます。 やりたいこと Webアプリであるアクションがあったとき、特定のTwitterアカウントからツイートする (例えば、アプリ内でユーザーの投稿に100以上の「イ…

自分でWebサービスを作ってみる その2

前回はちょっとした書き換えレベルだったので、もうちょっとマシなHelloWorldをする。 (HelloWorldから先に進めていない…) コントローラを作る 以下のコマンドでコントローラができる。 単に app/Http/Controllers にファイルを作るだけじゃいかんのか?と…

自分でWebサービスを作ってみる その1

「なんかWebシステムつくりたい!」ので、自力で環境構築からサンプルプログラム作成までを目指す。 絵描いてる人が休憩にらくがきしはじめるみたいなやつ。…とはいえ、いつもコーディングが主なので環境構築自体はやらないんですよね… 慣れない作業なので手…

array_columnのかんたん代替

PHP

PHP5.5.0以降で使えるarray_columnという関数があります。例えば以下のような二次元配列があったとして $list = array( array('hoge' => 1, 'fuga' => 100), array('hoge' => 2, 'fuga' => 200), array('hoge' => 3, 'fuga' => 300), );fugaの値だけを抜き出…

PHPのゆるやかな比較の怖さを改めて思い知るの巻

PHP

if (0 == "-") { return true; } else { return false; } これがtrueになったので「!?」となりました。 「0 == ""」や「0 == null」がtrueになるのは知っていましたが…。一体どういうことなのかを調べてみると、 こういうケースでは文字列をint化して比較す…

日時を扱ういろいろ PHP版

PHP

PHPでの日時の扱いについてですが、INT型のUnixタイムスタンプを用いるのが基本です。例えば現在の日時を「YYYY-MM-DD hh:mm:ss」という形で求める場合、 $datetime = date("Y-m-d H:i:s", time()) とします。 time()で現在のUnixタイムスタンプを取得し、そ…

マルチバイト文字列関数の罠

PHP

ある時、CSVのデータをインポートする処理で不具合が発生。 「2件のデータをまとめてインポートすると1件のみ失敗して、 成功したデータを除いて再度その1件のみをインポートすると成功した」 いやいやそんなアホな。色々調べた結果、この結論に至りました。…

ランダム文字列を生成する関数

PHP

以前に同タイトルの記事を書きましたがこちらはPHP版。↓こちらはVBA版。まあこちらも基本ロジックは一緒なんですが…honey8823.hateblo.jp private function makeRandomStr($strlen = 1) { // 使用可能な文字一覧 $randomstr = "abcdefghijklmnopqrstuvwxyz12…

特定の文字以降を別の文字列に置き換える

PHP

具体的には、「メールアドレスの@以降を*でマスクする」ロジック。 文字列処理の関数を多数使用できて面白かったのでメモ。 ただ、PHPならもっと簡単なロジックが作れそうな気も…? // 加工前のメールアドレス $mail_address = "hoge@fuga.com"; // 加工後の…

in_array VS array_search 速度検証

PHP

タイトル通り。わたしは普段「ある配列にある値があるかどうか」のチェックにin_arrayを用いていますが、 他の人のソースでarray_searchを用いているのを見かけたので 単純に気になって速度検証。 (in_arrayの方が速いんじゃないかなーという予想)検証コー…

正規化した絶対パスを取得する方法

PHP

/hoge/fuga/../piyo/./yomo/ ↓ /hoge/piyo/yomo…といい感じに変換してくれる関数はないものか…と思ったら、ありました。参考:realpath - php http://php.net/manual/ja/function.realpath.php $path = "/hoge/fuga/../piyo/./yomo/"; // 変数$newpathに正規…

特定のデータベースが存在するかどうか確認する

※MySQLを前提として書いていますクエリ一発で確認できます。 SHOW DATABASES LIKE 'DB名' DB名指定しなければ一覧取れます。 SHOW DATABASES さらに、PHPでユーザ入力値の名前のデータベースが存在するかどうか確認したかったんですが、 // クエリ生成 $quer…

OpenWeatherMapから近い天気予報を取得するロジック

PHP

弊社の社内ポータルサイト的なやつに天気予報を載せてるのですが (いや、そんなもんいらなくね? というツッコミはめんどくさいのでやらない) それが軽くバグってたのでこっそり修正しつつロジックまとめておく。天気予報は外部APIから取得しています。 ht…

カレントディレクトリを一旦変更してから元に戻す

(知らなかったとはいえ)あぶねーことしてたので反省がてら。 もしかしたら初心者レベルかもしれないアレでアレなんですが…サーバに置いてあるファイルを参照するシェルスクリプトをPHPから呼んでいたのですが、 シェルスクリプト内でファイルを相対パス指定…

PHP×mongoDBでいろいろな検証

環境 ・VMWareでCentOS5.8 ・PHP 5.4 ・MongoDB 2.6 countの速度検証 // $collection は new MongoCollection 云々で定義したやつ // $condition は取得条件の配列 // ① $count_a = $collection->count($condition); // ② $count_b = $collection->find($con…