雑多なブログ

音楽や語学、プログラム関連の話題について書いています

php

PHP - テキストに数行おきに空行を挿入する

PHP

テキストに数行おきに改行を挿入する方法を調べた。 処理のイメージは次の通り。 入力テキスト あああああああああああ いいいいいいいいいいいいい うううううううううううう ええええええええええええ おおおおおおおおお かかかかかかかかか 出力テキスト…

composer で「prestissimo」に関するエラーが出た場合の対処

composer を実行したら下記エラーが出た。 Problem 1 - hirak/prestissimo is locked to version 0.3.8 and an update of this package was not requested. - hirak/prestissimo 0.3.8 requires composer-plugin-api ^1.0.0 -> found composer-plugin-api[2.…

PHP - Laravelでuuid(v4)を生成する。

Laravel5.6以降は Str::uuid() でuuid(v4)を生成する事ができる。 use Illuminate\Support\Str; $uuid = (string) Str::uuid(); 独自に実装する必要もなく、別途ライブラリをインストール必要もないので楽ちん。 Laravel公式ドキュメント https://laravel.co…

PHP: 可変長引数の関数定義

PHP

PHP5.6以降は、func_num_args(), func_get_arg(), func_get_args()を使わずに可変長引数を実現できる。 そのことに最近気づいた・・・・ 当然、余計な関数を使わないので実装がスッキリする。 例 int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(…

PHP - composer install のメモリ不足を解消する!

composerを実行する際、メモリ不足で落ちる事がある。 使用するライブラリーが多いと発生するような気もするが詳しい原因は不明。実行事にメモリに保持されるデータのサイズが大きくなり、デフォルトのmemory_limitの設定を大幅に超過してしまうようだ。 mem…

PHP: preg_grepでパターンにマッチする要素を配列から抽出する。

preg_grepは配列の要素を絞り込むのに便利な関数だ! なんで今までこんな便利な関数を知らなかったろう・・・ preg_grep ( string $pattern , array $array , int $flags = 0 ) : array|false $pattern 正規表現のパターンを指定 $array 検索対象の配列 $fla…

PHP: preg_grep - パターンにマッチする配列の要素を抽出する

PHP

最近、preg_grepという便利な関数を知ったのでメモ。 YYYY/MM/DD hh:mm:ss_任意の文字 の形式に合致する要素だけ抽出する例は下記の通り。 $array = [ '2020/10/12_aaaa', '299925_bbb', '2021/04/21_bbbb', '2021/08/21_bbbb', '2021/02/21_bbbb', '2021-02…

PHP: DOMXPathでは、nodeValueに & を含む文字列を代入できない。

DOMXPathでnodeValueに&を含む文字列を代入しようとしたら警告が出た。 PHP Warning: main(): unterminated entity reference 実行結果を見てみると、代入はできておらず、代入する前の元の文字列も抜け落ちていた。 string(35) "<div> <p id="text"></p> </div> " 検証に使用したソース…

PHP: declare(strict_types=1)設定したらtrim()でエラーになった。

PHP

trim関数に限らず、declare(strict_types=1) を指定すると、標準関数の引数の型も厳密に指定する必要がある。 今までのような感覚でなんとなくで引数を指定すると、想定外のところでエラーが発生するから、使い慣れている関数でもリファレンスで引数の型を確…

Laravel6以降: ログの設定を調整しよう!

Laravel6.0以降、ロギングに関して下記設定がデフォルトに設定されていた。 "laravel.log" にのみ書き込まれる dailyではないので、全ての年月のログが同一ファイルに書き込まれる ログ保持期間が14日 このままだと色々不都合がありまくるので、次の通り設定…

Laravelでviewのパスを一時的に変更する。

Laravelを使用していて、一時的にbladeテンプレートの参照ディレクトリを変更したい事があったので、その方法について調べた。 Laravel5〜6にて確認。それ以前のLarvelではやり方が異なる可能性があるので注意。 コントローラーの実装例 public function ind…

PHP: 正規表現のテストができるサイト

正規表現の実行結果を、リアルタイムに確認する事ができるサイト。 正規表現のパターンを作成する時に便利。 regex101.com

macでphpenv使ってみたけど微妙だった。

ライブラリの依存関係でかなりひっかかります。 特定のバージョンのphp(特に古いやつ)をインストールする場合に、コンパイルに必要なライブラリのバージョンが対応していないというエラーがめちゃくちゃ出ます。 それなら、とそのライブラリの特定のバージ…

php: phpspreadsheetでシートのクローンができない。

php

テンプレートシートをもとに、複数のシートを生成する処理を実装しようとしましたが実装できませんでした・・・・ 詳細は省略しますが、おおまかな処理の流れは次の通りです。 Excelブックのオブジェクトを生成する テンプレートのExcelを読み込む ループ処…

php: curlの結果が直接出力される

PHP

phpでcurl関数の実行する場合、デフォルトではレスポンスが直接出力されてしまう。 下記はPHP公式サイト記載のcurlのオプションの説明 CURLOPT_RETURNTRANSFER TRUE を設定すると、curl_exec() の返り値を 文字列で返します。 通常はデータを直接出力します…

PHP: serializeしたデータはテキストで保存するな!

PHP

serialize関数で、PHPの値を変換する場合は、テキストデータではなく、バイナリーとして取り扱う事。 普通のテキストデータとして取り扱ってしまうと、 データが壊れてしまって元の値を復元できなくなる!! これは怖いぞ・・・ 下記はPHP公式のドキュメント…

PHP: globでディレクトリ名だけ取得する

PHP

glob関数でディレクトリリストだけ抽出する場合は、第二引数に GLOB_ONLYDIR を指定する。 例 foreach (glob('/path/to/target/*', GLOB_ONLYDIR) as $d) { echo $d, "\n"; } glob関数のドキュメントはこちら。 www.php.net

mac: PHPを実行しようとしたら謎のエラーが出た

macのterminalでPHPを実行しようとしたら、下記のエラーが発生しました。 dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicuio.64.dylib Referenced from: /usr/local/bin/php Reason: image not found zsh: abort php ぐぐってみたところ、brewで…

PHP: substrの使い方

PHP

substrは文字の一部分を返す関数です。 バイト単位で検索するため、マルチバイト文字には使えませんが、 工夫すると色々と使い所のある関数です。 目次 1-1. 指定した文字列の7文字目から末尾までの文字を取得する 1-2. 指定した文字列の2文字目から4byte分…

PHP: date関数の日付文字列の書式

PHP

Date関数の日付文字列の書式 改めて日付文字列の情報を読んでいるのだけど、1年の経過日数まで取得できることは知らなかった。 さておき、普段よく使うのは年/月/日 /時/分/秒あたりだと思う。 あとは地味に必要なのが月の日数。 文字 内容 例 d 0詰め2桁の…

PHP: 古いバージョンのPHPをyumでインストールするならremiじゃなくてius-archive

2020-09-02更新 仕事の都合上、7未満の古いバージョンのPHPの環境を構築する必要があったのですが、yumでのインストールがスムーズにいかなかったので色々試行錯誤しました。 目次 remiのデメリット ius-archiveリポジトリがあるよ! ius-archiveでパッケー…

PHP: PhpSpreadSheetでシートがうまく読み込めなくてハマった。

PhpSpreadSheetでシートが読み込めない! PhpSpreadSheetでExcelのファイルを読み込んで、あれこれ処理を行うプログラムを開発していたのだけど、何故かシートが読み込めないトラブルに遭遇した。 読み込めない原因は? Excelの内部のデータを確認したところ…

PHP: str_split,mb_str_splitで文字列を指定文字で分割する

PHP

str_split、mb_str_splitは文字列を指定文字数で分割する関数だ。 例えば、こんな感じで文字列を数文字ごとに分割する場合に重宝する。 元の文字列 AiueoKakikukeko ↓ 分割後の文字列 Aiu eoK aki kuk eko そんな時は、str_splitとmb_str_splitを使うと簡単…

PHPのサポート期間

PHP

PHPの各バージョンのサポート期間について確認した。 ただ、PHP公式のサポート期間が終了している場合でもOSディストリビューション毎に、バックポートは適用されていると思われる。 したがって、PHPのサポート期間だけではなく、運用しているサーバのOSのサ…

PHP: phpspreadsheetでExcelの読み書きをする。

はじめに phpspreadsheetは、PHPでExcelの読み書きを可能にしてくれるとても便利なライブラリ。最近仕事で使う機会が多い。 備忘もかねて基本的な操作についてまとめてみた。 新しいブックを新規作成 Excelのブックを新規作成するには、先ずスプレッドシート…

Laravel: 現在の環境を確認する

現在の環境情報は下記で取得できる。 App::environment(); これを使えば、本番環境と開発環境で処理を分けたい場合の判定に利用できる。

PHP: array_mapの使い方

PHP

array_mapは指定した配列に、コールバック関数を適用する関数だ。 例えば、連想の配列の値の前後に余分なスペースが混入している場合。要素の値を参照する箇所で個別にtrim関数でスペースを削除するのではなく、array_mapで一括でtrim関数を適用する事ができ…

フィボナッチ数列を色々な言語で実装(再帰版)

ひとまず、パフォーマンスめちゃくちゃ悪いけど単純な再帰の実装を作ってみる。 python #fibo1 def fibo(num): if num == 1: return 1 elif num == 2: return 1 return fibo(num - 2) + fibo(num - 1) for n in range(1,10): print("{}番目の値: {}".format(…

PHPでUUIDを生成する

ランダムな文字列を取得するならUUIDが便利そう。 UUID(Universally Unique Identifier)は、 元々分散システム上でユニークな識別子を作成できるように設計されていて、重複や偶然の一致が起こらない前提で用いる事ができるのだそうだ。 さておき、PHPでUU…

PHP: UTF-8のBOMを手っ取り早く削除する

PHP

PHPでBOMを削除する例 手っ取り早く、PHPでBOMを削除するにはこちら。