TRY AND ERROR

気になったこと、勉強したこと、その他雑記など色々メモしていきます。。Sometimes these posts will be written in English.,

PHP

Trap on findElement with cssSelector for Facebook WebDriver

github.com In my case using Facebook WebDriver for Headless browser Testing, there is a trap on findElement with cssSelector. Assume you want to find the element(s) by css selector that you specify like what their style attribute doesn't h…

Cakephp3のShellがcronで動かなかった理由

デイリーの集計絡みのバッチを書いていてちょいはまったのでメモ。 まず、 CakeのShellをcronで叩く際のOfficialの記載はこう 15 0 * * * cd /full/path/to/app && bin/cake myshell myparamこれが動かなかった。 次に試したのは、そもそもcdする必要ないん…

phpQueryでタグの破片などのノイズを除きつつテキストっぽいものだけを取得する。

PHP

とりあえず行き着いた方法をメモします。 htmlによっては、先頭にxmlステートメントが混ざってくる場合が稀にあるので、最初に除去しておく。 さらに、なぜかscriptやstyleの破片などがノイズとして紛れ込むケースが多々あるので、これらも除去。newDocument…

CakePHP3でPC/スマホのviewを切り替える方法

CakePHP3を使ってて一番助かったなあと思う機能が、PC/スマホのview切り替えです。実装はめちゃくちゃ簡単。・PC版のviewは通常通りsrc/Templateに作成します。 ・plugins直下にスマホ用のディレクトリを作成(今回は「Sp」というディレクトリを作成) ・p…

Excelでcsvを開いたときに「SYLK:ファイル形式が正しくありません。」という警告が出る件

PHP

ちょっとハマった。。。PHPでDBの取得結果をCSVーDLするスクリプトを書き、実際にDLして開いたところ「SYLK:ファイル形式が正しくありません。」という警告が出ました。 最初は、エンコードやらでなんかおかしなことになったか?と思ったんですが、警告が出…

PHP7三項式まわりが快適すぎる

PHP

PHP7の三項演算あたりを本格的に使ってみましたが、快適すぎてやばいです!あるkeyが存在するかどうかわからない配列をマージするような場合、 いちいちisset()しなくてよくなった!! array_merge( $a['key'] ?? [], $b['key'] ?? [], $c['key'] ?? [], $d…

【PHP】ChatworkのAPI使ってみた

チャットワーク(Chatwork)のAPIを使って指定ルームにメッセージを送る PHPのクラスを作ってみました。バッチ処理の結果をチャットワークで見たい、メールの設定がめんどくさい、 みたいなときに使えるかも。。 クラスファイル:Chatwork.php

【PHP】巨大ファイルを読み込むとき

PHP

PHPでサイズの大きいファイルを読み込む時のメモ。 外部ファイルを全部読み込めればOK、ただし読み込めなかった場合には エラーを返すというロジックを組みたかった。 たとえば、外部サイトをスクレイピングする際に、 HTMLファイルサイズが一定サイズを超え…

PHPでGoogle Search ConsoleのAPI使ってみた

題名の通り、使ってみたのでめもします。。 やったこと ・PHPのサーバアプリでGoogleSearchConsoleの検索アナリティクスのデータを取得。 ・google-api-php-clientを利用 ・複数アカウントのGoogleSearchConsoleに登録されている全てのURLの データを取得 ・…

古いバージョンのPHPでついやってしまうあの構文

PHP

wordpressのテーマを作成する案件があり、テストサーバで動作確認したものをクライアントのサーバに導入しテーマを適用ところ、画面が真っ白に。。。 とりあえずini_set()でエラーを確認してみると、 どうやら配列を返すメソッドをコールしたところで落ちて…

PHPでrequireしたファイルが読み込めない時!

PHP

とあるPHPの実行ファイルがあって、その中で別のクラスを読み込んでいます。 読み込んだクラスの中でこれまた別のjsonファイルを読み込もうとするが、 なぜか読み込めずにちょいハマり。。。 ディレクトリ構造はこんな感じ [DocumentRoot]/index.php [Docume…

PHPで作ったcsvをブラウザからDLさせてエクセルで開くときの文字化け

PHP

こんなときのベストプラクティスって何だろうか。。 例えば、DBから取ってきたデータをcsvにしてDLさせたい場合など、 UTF-8でエンコードされたデータを扱うことが多いかと思います。そのままDLさせてエクセルで開くと文字化けすますね。 エクセルがCP932(Sh…

【PHP】Windowsのbatファイルを実行する

なかなか使うことは少ないと思いますが、PHPからbatファイルを実行する 方法をメモっときます。PHPの組み込みメソッドで「exec」という外部プログラムを実行するものがあります。 例えば、以下のように記載するとphpファイルと同階層にあるtest.batを実行で…

【PHP】HTML文字列のエスケープ

PHP

クライアント側に文字列を返すサーバ側の処理を考えた際に、 そのまま返すと文字列にscriptが含まれる場合にscriptが動作してしまうことも考えられます。そこで、サーバから文字列を返す際には、HTMLを形成する特殊文字をエスケープする必要があります。 PHP…

【PHP】sessionとcookieについて

PHP

今回はsessionとcookieについて少しおさらい。 あとPHPで具体的にどう使うか、についても触れておきます。 sessionとcookieって? 大まかに言うと、両者ともある一定期間データを保存しておく仕組みです。 ただ、データをサーバ側に保存しておくのか、クライ…

【PHP】PDOでSQLを発行する2つの方法

PHP

PDOでクエリを実行する方法として以下の方法があります。⑴ queryを使う ⑵ prepare後にexecuteする 具体的な使用例は以下の通りquery $sql = 'select * from userTable'; $stmt = $dbh->query($sql); prepare $sql = 'select * from userTable where id = ?';…

【PHP】PDOでselect件数を取得する

PHP

PDOを使ってDBから検索結果の件数を取得したい場合、 PHPの公式マニュアルでは、rowCount()というそれらしきメソッドがあります。ただ、公式マニュアルによると「rowCount()はすべてのデータベースでうまく作用するとは限らない」とのこと。。。そもそも、ro…