目次
- 一般(PHP8)
- LINE Message API
- 一般(PHP7)
- CakePHP3
- 一般(PHP5.6)
- 文字列操作
- 日付と時刻
- 配列
- Composerの覚書
- 画像処理 GD
- Guzzleの覚書
- WordPressの覚書
- PHPUnitの覚書
一般(PHP8)
- PDOの基本 :データベースアクセスオブジェクト
- トークン生成
- ルートパス(基本URL)を取得 | cssファイルやjsファイル読み込み用 | Laravel
- シングルトンパターン
- .envファイルから設定値を取得するオリジナル関数
- 文字列を数値化(整数化)する | intval
- iniファイル内のデータを読み込み、配列にセットする
- 配列をiniファイルへ書き込む
- SQLサニタイズ【2023年版】
- require_onceを省略する | spl_autoload_register
- セッション(session)のデータをDBで管理するオリジナルクラス | PDOSessionHandler
- LINE Message API: リッチメニューをCURLで登録
- LINEリッチメニューをPHPコードでCURL配信設定
- ディレクトリ削除 | 内部のファイルやフォルダごと削除
- ディレクトリコピー | 内部のファイルやフォルダごとコピー
LINE Message API
- メッセージ送信とリクエストIDの取得
- LINEオーディエンスの一覧表示、登録、削除 | CURL | LINE Developer API
- LINE Message API: リッチメニューをCURLで登録
- LINEリッチメニューをPHPコードでCURL配信設定
一般(PHP7)
- テキストからおすすめ商品を取得するアルゴリズム | #レコメンド #レーベンシュタイン
- Youtubeタグのヘルパー | video
- localhostで接続が拒否されました。←対策 | https SSL | Chrome
- DockerコンテナにてGDを使えるようにする | PHP7.4
- 初期値をセットする際の1行簡易記述 | ワンライナー | ??
- falseかtrueのフラグ値に変換するテクニック | !!
- staticメソッド | ファクトリー | static() | self::
- アノテーションコメント TODO FIXME HACK REVIEW OPTIMIZE CHANGED NOTE WARNING QUESTION TEMP
- オリジナルクラスでCake機能を使えるようにする | CakeObject
- property_exists | オブジェクトもしくはクラスにプロパティが存在するかどうかを調べる
- ルートパスを取得する | localhostと本番環境の両方に対応
- 名前空間namespaceとuseについて
- namespaceやuseを宣言しているクラスで、別ディレクトリにあるクラスをインスタンス化(new)する方法
一般(PHP5.6)
- JSON変換
- テキストファイルから文字列を読み取る
- 文字列をテキストファイルに書き出す
- ファイルのソースコードを取得する
- 文字列を指定文字で分割(split,preg_split,explode)
- 空判定について
- 改行コードを<br>タグに変換 nl2br()
- 小数点の四捨五入、切上げ、切捨て
- web上の画像をコピーする
- 金額など数値の3ケタ区切り | number_format
- 時分チェック関数
- XSSサニタイズ
- SQLインジェクション用のサニタイズ
- XML出力用のエスケープ
- URLをサニタイズ | 要素属性へのXSS攻撃
- PHPの注意:PHPの関数と同じ名前でオリジナル関数を作ってはいけない。
- 数値を2桁表記にする(例 2→02) | sprintf
- 小数点以下の0(ゼロ)埋めて桁数をそろえる | number_format
- 科学記法を10進数表記にする(例 1.23E+14 → 123000000000000)
- 文字化け対策した日本語ファイル名のファイルコピー | move_uploaded_file
- 日本語ディレクトリの存在チェック | 日本語フォルダに対応したis_dir
- 指定したパスから中間ディレクトリも含めてディレクトリを作成
- ディレクトリを作成しながらファイルコピー(日本語名ファイル対応)
- ディレクトリ内のファイルを列挙 | ファイル一覧を取得
- ディレクトリ階層化の全ファイルを列挙
- 指定ディレクトリ内のファイル詳細情報を取得する
- パスを削除する(2023年版) | 内部にファイルを含むディレクトリの削除、ファイル削除、失敗リストも返す
- ディレクトリ内のファイルをまとめて削除
- ディレクトリごとファイルを削除する
- ディレクトリ内のファイルとフォルダをすべて除去する
- ディレクトリ内のファイル削除 | 指定日数より古い更新日のファイルをすべて削除する
- ファイル名からディレクトリ、ファイル名、拡張子を取得する | pathinfo()
- ディレクトリが存在しないならディレクトリを作成する
- ファイル削除を日本語名ファイルで行う方法 | unlink
- ディレクトリを深く探り、ファイル群のファイルパス配列を取得する
- IPアドレスを取得する | $_SERVER["REMOTE_ADDR"]
- 暗号化関数の拡張版 md5Ex
- 日時入力チェックのバリデーション
- 遷移元URLであるリファラを取得する | $_SERVER['HTTP_REFERER']
- URLからドメイン、パス、クエリ、ポート番号などを取得する | parse_url
- 現在のURLを取得する | HTTP, HOST(ホスト)の部分を取得 | 相対URLの取得
- 英数字のランダム文字列を生成する
- ホスト(ドメイン)からハッシュを作成する
- 文字化け対策をとして、PHP.iniの設定をutf8にする
- PHPのエラー
- 一意なハッシュコードを生成 | 照合用のハッシュに・・・
- サーバー名またはホスト名を取得 | $_SERVER['SERVER_NAME']
- ローカル環境である場合の処理(サーバー名にlocalhostが含まれる場合)
- Proxyサーバー経由のアクセス元IPアドレスを取得する
- プロキシサーバーが設定している値を取得する
- ユーザーエージェントの取得
- ob_startとob_end_cleanによる出力バッファのクリア
- 文字の一致率 | レーベンシュタイン距離 | similar_text
- あいまい一致関数 | similar_text_ex | 比較文字1と比較文字2の一致率による判定
- 文字列の先頭から一文字を取得する
- 文字列の末尾から一文字を取得する
- 最大実行時間(タイムアウト)をphp.iniで設定する | Maximum execution time of 30 seconds exceeded
- タイムアウトの延ばす | set_time_limit
- ログアウトの時間を伸ばすphp.iniの設定 | ログイン認証時間を延ばす | セッションタイムアウトの時間を1日にする
- セッションのエラー:Warning: session_start(): Cannot start session when headers already sent in ...
- 1行IF文
- キャメルケースおよびスネークケースへの変換
- ローワーキャメルケースへの変換
- テーブル名からモデル名に変換する
- テキストファイルを途中から読み込む
- 大容量CSVファイル1000行ずつ読込 | メモリ使用状況も確認
- forループによるテキストファイル処理 | 最大20行までのテキストを出力する
- POSTデータの容量を増やす | Warning: POST Content-Length of ...
- テキストファイルからオフセットで指定した1行を読み込む
- テキストファイルの先頭行文字列を取得する
- 波ダッシュを全角チルダに変換する
- アップロード容量を増やすphp.iniの設定
- 複数の改行コードに対応した改行分割 | preg_split
- 改行コードを統一する
- 緯度経度を度分秒表記(60進数)から10進数に変換
- 複数の区切りで文字列を分割
- 先頭の一文字を取得する
- 先頭の一文字をカットする
- 分数表記の文字列を浮動小数に変換する
- Exifを取得
- 文字列から日付の部分を別の日付に置換
- PHPのコールバック
- PHPのコールバック | 関数名を文字列として指定する
- AJAXクロスドメイン
- cURLでクロスドメイン
- cURLによるクロスドメイン:認証キー付き
- file_get_contentsによるクロスドメイン
- クロスドメイン・ファイルアップロード
- POSTとPUTの違い
- ヘッダー情報を取得 | getallheaders
- file_get_contents関数でスクレイピング
- 2次元配列データからHTMLテーブルを作成
- フルパスを取得 (Windows環境でのパス)
- ディレクトリパスの種類ごとのmkdirを検証
- フルパスのディレクトリセパレータ定数 DIRECTORY_SEPARATOR
- ファイルの更新日時を取得する
- 絶対パスと相対パスの組み合わせたパスの記述方法
- CSVファイルダウンロード | テキストファイルダウンロード
- zipの解凍 | ZipArchive
- zipの圧縮 | ZipArchive
- SELECTフォームを作成する
- 型をセットする | settype
- 型をセットする | 配列へ個別で型指定
- 特定のファイルをダウンロードさせる
- submitの挙動
- XML用の記号エスケープ関数 | escapeMarkForXML
- ファイルおよびディレクトリのパーミッション(属性)を変更する
- ファイル存在チェック(フォルダと日本語名も検証)| is_file,file_exists
- データのグループ化
- ループにおける関数処理を高速化する
- 最大実行時間が30秒の制限を解除する
- ファイルパスやディレクトリパスからパスセパレータ(パス区切り)を取得する
- 自作テンプレートエンジン | コンテンツを文字列として取得 | レンダリング render
- 連続するスペースを一つにする
- 文字列で指定した関数を呼び出す
- 文字列のクラス名とメソッド名を指定して実行する
- 拡張URLエンコード
- CSV用データに変換
- CSVファイルを読み込み配列データに格納する
- CSVテキストを読み込み配列データに格納する | バージョン2
- CSVの行が改行中であるか判定する
- evalの使い方
- Eval実行のエラーだけをキャッチする(外部エラーは無視)
- globalの検証
- パスの末尾にスラッシュがなければ追加(削除)
- XMLファイルを読み込んでパースする | simplexml_load_file
- JAX.phpでXMLと配列データを相互変換する
- ファイルからテキストを取得する | file_get_contents
- XMLテキストを読み込んでデータ配列を取得 | SimpleXMLElement
- PHPの罠:文字列と0を比較するときは注意
- 配列内の値存在チェック | in_arrayの高速版
- ファイル名の拡張を小文字化する
- 関数に配列を参照渡ししたときの検証
- 配列の参照実験
- 特殊比較:ゼロ比較
- パスやURLのセパレータをそろえる
- ツリー構造データ関連クラス
- ImageMagickの旧覚書
- ページネーション
- タグ除去
- GCPへの登録から「Google Translate API」を動かすところまで
- Google Translate API | 言語リストを取得
- カレントディクトリパスを取得 getcwd()
- PhantomJSで動的HTMLをスクレイピング(Windowsローカル環境)
- execが動かしているもの
- OSを調べる
- バックグラウンド(非同期)でPHPを実行する
- データからINSERT SQLリストを作成する
- データからINSERTとUPDATEのSQL文を生成する
- エンティティからINSERT文とUPDATE文を作成する
- ブラウザ判定
- 画像サイズ(横幅、縦幅)を取得する
- 使用メモリを取得 memory_get_usage()
- ファイル容量を取得 | filesize()
- UTF8ファイルのテキストに付いているBOMを除去する
- ログ出力 error_log
- ログ出力 | オリジナル
- 入力チェックバリデーション | InputCheckValid
- ディレクトリごとログファイルを作成、また旧ログファイルの除去も行う | LogEx.php
- 手入力フラグの自動変換
- ファイル名変更
- 日本語ファイル名を半悪英数字に変更
- 物理メモリの割り当てを増やす | memory_limit
- 別のファイルを埋め込み(HTMLファイルを埋め込む) | include
- 配列の定数 | const PHP5.6
- TCPDFによるPDF | 基本
- TCPDFのCSSスタイル
- TCPDF ERROR: Some data has already ...
- 自作ログイン | 基本
- 自作ログイン | ログインチェックとログアウト
- メール送信 | mb_send_mail
- パスワード自動生成
- データのDB保存(オリジナル版) | save | saveAll
- 連想配列から変数を作成する | extract
文字列操作
- 文字数を取得
- 文字列の置換 | str_replace
- 対象文字列に検索文字列が存在するかチェック
- 先頭の一文字を取得 | 先頭のn文字
- 末尾の一文字を取得 | 末尾のn文字
- 文字列を左側から印文字を検索し、左側の文字を切り出す
- 文字列を左側から印文字を検索し、右側の文字を切り出す
- 文字列を右側から印文字を検索し、左側の文字を切り出す
- 文字列を右側から印文字を検索し、右側の文字を切り出す
- 末尾の一文字を削る
- 先頭の一文字を削る
- 文字幅を適当に切りそろえる(文字丸め) | mb_strimwidth
- 先頭を大文字にする
- 2つの印文字に挟まれた文字を取得する
- 2つの印文字に挟まれた文字を置換する
- 文字列を配列化する
- 日本語文字列を配列化する
- 文字列中で仕様している文字を重複なしで列挙する
- 文字列を小文字化する | strtolower,mb_strtolower
- 文字列を大文字化する | strtoupper,mb_strtoupper
- 文字列の両端からダブルクォートなどを除去する
- 文字列の先頭または末尾から指定文字を除去する
- 文字列をShift-JISからUTF8に変換する | mb_convert_encoding
- データ配列内の値をまとめてShift-JISからUTF8に変換する | mb_convert_variables
- 検索する文字を含む行を取得する
- 文字列から連続する数値部分を抽出する(複数一致に対応)
- 位置指定して文字列の一部を置換する(マルチバイトに対応 mb_substr_replace)
- 文字列のバイト数を取得 | UTF-8
- 文字列の複数置換 | 配列を指定すると一括で複数の文字置換ができる
- 郵便番号変換
- 億万円表記
- 文字列中の空白を除去する | 半角スペースと全角スペースを除去
- ディレクトリパスの末尾のセパレータを除去、もしくは追加
- 全角数字を半角数字に変換する
- 全角スペースを半角スペースに変換する
- 全角記号を半角に変換する
- 連続する複数スペースを一つスペースにする
日付と時刻
- 日付の基礎 date()
- 日付の基礎 DateTime
- UNIXタイムスタンプを取得する | time
- 現在のUNIXタイムスタンプを取得 | time()
- 日付フォーマット変換(日時にも)
- 週始めの日付を取得
- 月初めの日付を取得する
- 元旦日を取得する
- 日付の加算と減算
- 日付比較
- 年月日フォーマットから日付型データとして取得
- 日付のループ
- DateTime型日付と unix timestampの相互変換
- 日付ループ(DateIntervalを使わない)
- 日付フォーマット変換
- 2つの日付の日数差を算出する
- 変数や配列を1つの文字列にする | serialize
- 日付の月末日を取得する方法 | Y-m-t
- 期間月分割 | 開始日から終了日までの期間を月ごとに分割する関数
- 日付が8桁数値表記であれば、y/m/d形式に変換する
- 時刻フォーマット変換
- 日時入力チェックのバリデーション
- 数日後、数年前、数秒後などの日付を取得する
- chaekdate関数の要注意バグ
- ミリ秒 | microtime
- 期間を指定月間で分割
- 文字列から日付の部分を別の日付に置換
- タイムゾーンを東京に設定する | date_default_timezone_set('Asia/Tokyo');
文字列から日時フォーマットを取得する関数
番号文字列から日付を取得する関数
部分的日時のフォーマット変換を行う関数
- 部分文字列から日時情報を推測するクラス DatetimeGuess.php
- 手入力による様々な日付文字列入力を正しい日付フォーマットに自動変換する関数
- strtotimeをいろいろな日付文字列で試す
- 一か月後
- phpで取り扱える日時や日付形式であるかチェックする
- phpで取り扱える日時や日付形式を指定フォーマットに変換する
配列
- 配列から重複を削除
- 配列のソート
- 2次元配列のソート
- 2次元配列のソート:特定のフィールドでデータを並べ替える関数
- 多次元配列のマージ
- 配列の先頭と最後を取得する
- 配列をデバッグ | var_export
- 配列からURLのクエリを作成 | http_build_query
- 配列を等分割する | array_chunk
- 2次元配列から列を抜き出す
- 配列からキーをリストで取り出す | array_keys
- 配列をカンマ区切り連結文字に変換(IN句,CSV用に) | implode
- 文字列を指定文字数ごとに区切って配列にする | str_split
- 連想配列をインデック型である普通の配列に変換する | array_values
- 配列の先頭と最後を取得 | end,reset
- 配列のキーと値を入れ替える | array_flip
- 配列から空白を除去
- 配列判定 | is_array
- array_splice | 配列要素の挿入、変更、削除
- 配列内に指定する値が存在するかチェックする | in_array
- 配列のポインタ移動を検証 | end,reset,current,each,next,prev
- 配列の末尾を取得
- キー用の配列と値用の配列を合成し、キー付きのデータ配列を作成する
- 配列の先頭キーを取得する
- 配列の反転
- データ構造タイプを取得(0:空 , 1:プリミティブ型 ,2:エンティティ型 , 3:データ型)
- 配列の階層の深さを調べる
- 配列先頭の値を取得
- 配列内を値で検索し、キーを取得する | array_searchの検証
- 日本語文字列を配列にする
Composerの覚書
- Composerの概要
- Windows環境でcomposerコマンドを使えるようにする【2020年】
- Composerの入手
- composer.pharとは
- composer.pharはどこに配置すべきか
- ライブラリをインストールする
- composer.pharをコマンドでインストール
- ライブラリを更新する
- ライブラリをプロジェクトに組み込む
- 推奨:リポジトリ管理から外す
- composerをWindowsで手軽に動かすセット
- composer.pharのアップデート
- パケージ(ライブラリ)作成およびPackagistへ登録
- composerの指定ライブラリを更新
画像処理 GD
- 画像を取り込む
- 取り込んだ画像からサイズを取得する
- 別名で保存する
- 空画像を作成してファイル保存する
- アルファチャネルによる透明
- 複数の画像を合成し、一枚の画像を作成する
- 画像に別画像を拡大縮小しながらコピーする
- 画像に文字を重ねる | imagettftext
- 塗りつぶし | imagefill
- 文字列画像の横幅と縦幅 | imagettfbbox
- カラーコードからRGB値に変換
- 画像を回転させて保存
- サムネイル画像作成:PNG
- サムネイル画像作成:JPEG
- サムネイル画像作成:GIF
- サムネイル画像作成:クラス化
Guzzleの覚書
- PHPだけでクロスドメイン
- Guzzle3によるクロスドメイン
WordPressの覚書
- ワードプレスの概要
- 管理画面へのURL
PHPUnitの覚書
- 基本的なPHPUnitのインストール
- ホーム
- プログラミングの覚書