PHP関連のことを調べてみた2020年03月20日

PHP関連のことを調べてみた2020年03月20日

【PHP】連想配列に代入した値を使って文字を置換する

入力した文字列の中から任意の文字を置換したくて、for文使ったりforeach使ってみたりして数時間うんうん悩んでたけど、`strtr()`関数に配列突っ込んだら解決したっていうメモ。

##なんやそれ?
>str_replace — 検索文字列に一致したすべての文字列を置換する

とのこと。
参考: [PHP: strtr – Manual ](https://www.php.net/manual/ja/function.strtr.php)

“`php:引数
strtr($検索する文字列, $対象文字列, $置換する文字列);
“`
引数に連想配列を渡すこともできる。
`$key`が対象文字列、`$value`が置換する文字列になる。

“`php:引数に連想配列を渡す
$s = ‘AI’;
$ary = [‘A’ => 1];

echo strtr($s, $ary);

//実行結果
1I
“`

##実装

“`php
4,
‘E’ =>

元記事を表示

PHP 年と月からその月の長さ(最終日)を取得する うるう年判定込

“`php
function checkFinalDay($year,$month){
$finalDay = [
“1” => 31,
“2” => 28,
“3” => 31,
“4” => 30,
“5” => 31,
“6” => 30,
“7” => 31,
“8” => 31,
“9” => 30,
“10” => 31,
“11” => 30,
“12” => 31,
];

if( $year%4 == 0 && $year%100 != 0 || $year%400 == 0 {
$finalDay[“2”] = 29;
}
return $finalDay[$month];
}
“`

元記事を表示

SimpleSAMLPHPでIdPのログインページをカスタマイズする方法

#やりたいこと
SimpleSAMLPHPを使ってIdpを構築してSSOをやっているのですが
いざ、構築し終わったらデフォルトのログインページのまま

これではだめなので変えようとしたところ死ぬほど苦戦したのでメモ

#実現方法
デフォルトのログイン画面は

`modules/core/templates/loginuserpass.tpl.php`になります

こいつをオーバライドしてやる必要があるわけです。

SimpleSAMLPHPにはテーマ機能があって、すべての画面をカスタマイズできます。
しかしその情報が公式ドキュメントのみなので面倒です

[公式](https://simplesamlphp.org/docs/1.18/simplesamlphp-theming#section_1_1)の通りにディレクトリを作成します

“`
cd modules
mkdir mymodule
cd mymodule
touch default-enable
cd modules/mymodule
mkdir -p themes/fancytheme
“`

configの設定を変え

元記事を表示

WordPressでカスタマイザーにオプションを追加する一番簡単な方法

カスタマイザーを使うことでロゴやヘッダー画像のアップロード、テーマカラーの設定などWordpressテーマの様々なオプション設定ができるようになる。

## カスタマイザーを作成する方法
functios.phpに以下のコードを追記する。

“`php
function mytheme_customize_register( $wp_customize ) {
// セクション(グループ)を作成
$wp_customize->add_section( ‘theme_color’ , array(
‘title’ => __( ‘Theme Color’, ‘text_domain’ ),
‘priority’ => 21,
) );
// データベースに新しい設定項目を登録
$wp_customize->add_setting( ‘color_base’ , array(
‘default’ => ‘#fff’,
‘transport’ => ‘refresh’,
‘sanitize_callback’ => ‘sanitiz

元記事を表示

PHP 配列に連想配列を入れたものをforeach文で出力する

# 目的

– 下記の記事で配列に連想配列を入れることをまとめた、その応用として配列の中身をforeach文で出力する方法をまとめる
– [PHP 配列に連想配列を入れる](https://qiita.com/miriwo/items/83e03aa66ea7aa86da35)

# 実施環境

– MacOS上のローカル環境にテスト用スクリプトファイルを作成してVisual Studio Codeのデバッグを用いて結果を確認した。
– 下記にVisual Studio CodeでPHPのデバッグ環境を構築する際の手順をまとめた記事へのリンクを記載する。
– [https://qiita.com/miriwo/items/e0a41308e042e34ebf78](https://qiita.com/miriwo/items/6edd6e1817def4fc11d5)
– 下記に実施環境の詳細な情報を記載する。

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.3) |
| ハードウェア | MacBook

元記事を表示

Heroku MySQLのデータベースから持ってきた日本語が文字化けする

## 3行で

– ClearDBのアドオンでMySQLを使う
– [Heroku公式のやり方でMySQLからデータを持ってくる](https://devcenter.heroku.com/articles/cleardb#using-cleardb-with-php)
– 文字コードを指定する

## 環境

PHP, Heroku, ClearDB, Mac

## 文字化け

HerokuとMySQLを同期するやり方は割愛。
[Heroku公式のやり方で](https://devcenter.heroku.com/articles/cleardb#using-cleardb-with-php)を参考にMySQLからデータを持ってくる。

“`php

元記事を表示

Laravel plackメソッドとか便利メソッド

##pluck
オブジェクト配列から同keyの値のみの配列にする

“`
$obj配列->pluck()
“`

##Laravel Collection 参考サイト
参考:https://qiita.com/mikakane/items/76ae73990bf1ece9e7ae

元記事を表示

さくらVPSでウェブアプリ公開まで

## はじめに
ローカル環境で作ったものをサーバー上にアップロードして公開する流れをまとめます。
その中で詰まった部分などを備忘録的にまとめます。

## ざっと流れ
1 さくらVPSを契約
2 Linux環境の構築
3 ドメイン取得
4 ドキュメントルート変更
5 SSL化

##1さくらVPS契約
まずはさくらVPSの契約から。
[さくらVPS申し込みはこちら](https://vps.sakura.ad.jp/)
![スクリーンショット 2020-03-19 20.49.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/464231/531a5750-5520-923e-c156-52cdd90f7b75.png)

14日間お試し期間があるのでその期間に一通りできれば無料でお勉強できます。
※プランは1Gを選択しました

登録が完了する下のようなコントロールパネルにログインできます。
![スクリーンショット 2020-03-19 20.54.35.png](https://qiita-imag

元記事を表示

ウェブサービスの主な機能について

# 主な機能一覧

###ユーザー管理
1.ユーザー登録機能
2.ログイン機能
3.ログアウト
4.プロフィール登録
5.プロフィール編集
6.退会
7.パスワード変更
8.パスワードリマインダー
9.管理者ユーザー登録

###コンテンツ管理

10.コンテンツ登録
11.コンテンツ編集
12.コンテンツ削除
13.コンテンツ一覧表示
14.コンテンツ詳細表示
15.コンテンツ検索
16.お気に入り登録
17.決済

基本的には上記の機能を実装し、そこに追加で機能を付け足していくことでほとんどのウェブサービスを作ることが可能になる。

元記事を表示

【Sign In with Apple】iOSアプリから投げられたidentityTokenをPHPで認証する

# 概要
`identityToken` というJWTがアプリから届いてパースして`sub`をユニークキーとして認証するのですが
改ざん防止の為、正しくデコードする必要があります。

細かいことはバージョンが違ったり環境で変わってくると思うので大まかな流れだけ書いておきます。

– appleの公開鍵を取得
– 取得した公開鍵を利用して検証
– 問題なければ取得できた値から `sub` を利用して認証

以上!!

要所要所の僕が使った部分を以下に記載してるので参考になれば幸いです。

# JWTとは
> JWT(ジョット)とは JSON Web Token の略で、電子署名付きの URL-safe(URLとして利用出来る文字だけ構成される)な JSONのことです。
電子署名により、JSON の改ざんをチェックできるようになっています。

> ざっくり言うと、改ざんできない JSON ということになります。

[JWT について調べた内容をまとめました。](https://qiita.com/t-toyota/items/8d0ffb265845ab8cc87c)

# パースしてみ

元記事を表示

php配列の中身を手っ取り早く確認する

#配列の中身を確認する

「配列の中身をパパっと確認したいんだけど!?」
ってなったので調べてみた。

`print_r()`と`var_dump()`って関数を使うといいっぽい。

##`print_r()`と`var_dump()`の違い
###print_r()で出力
– 配列であるという情報
– 各要素の値

###var_dump()で出力
– 配列全体の要素数
– 各要素のデータ型
– 各要素の値のバイト数
– 各要素の値

`var_dump()`はデータ型も加味した情報を確認したいときに便利みたい。

##print_r()で出力
####通常配列

“` php
$data = [‘yamada’, ‘takahashi’];

print_r ($data);

//実行結果
Array (
[0] => yamada
[1] => takahashi
)
“`

####連想配列

“`php
$data = [‘yamada’ => 123, ‘takahashi’ => 456];

print_r ($data);

//実行結果
Array

元記事を表示

本日の学習内容Part1

## 参考記事
mpywさんの[PHPでデータベースに接続するときのまとめ]
(https://qiita.com/mpyw/items/b00b72c5c95aac573b71)

## DBに接続する
“`
$db = new PDO(‘mysql:dbname=mydb; host=127.0.0.1; charset=utf8;’, ‘root’ , ”);
“`
mydb-> データベース名
127.0.0.1->ローカルサーバIPアドレス
charset=utf8->文字セット
root->ユーザー名(管理者権限の場合はroot)
‘(空)’->パスワードを状況によって設定

##DB接続した時の例外処理
“`
try{
$db = new PDO(‘mysql:dbname=mydb; host=127.0.0.1; charset=utf8;’, ‘root’ , ”);
} catch(PDOException $e) {
echo ‘DB接続エラー:’ . $e->getMessage();
}
“`

##感想
try~catch句はなかな

元記事を表示

PHPで現在時刻出したら8時間ずれてたお話

## はじめに
~~Unity勉強し始めたばっかですが~~ 最近PHPの勉強し始めました。
その中でつまった部分をQiitaに書き残して、これからPHP始める人たちの助けになれたらなと思ってます。

## 現在時刻を表示してみる

dateを使って現在時刻を表示するプログラムを作成してみます。
※フォーマットは以下サイトを参考につけました
https://www.php.net/manual/ja/function.date.php

“`php:date.php




現在日付を出す





“`

現在時刻が15時50分なのになぜか「今は07時50分」と表示される・・・。

##php.iniのdate.timezone
dateはphp.iniの中

元記事を表示

Tinderの自動スワイプ最新版

以前まで使っていたTinderの自動右スワイプコードが使えなくなってしまったようなので新しいコードを書いてみました。初めて作ったコードなので雑かもしれないですがちゃんと動くので許してください…

“`js
auto = setInterval(
function(){
var elem = document.getElementsByClassName(“focus-button-style”);
var i = elem.length -2;
elem[i].click()
}
,1000)
“`

一応やり方も。
(1)ChromeでTinderのスワイプ画面を開く
(2)右クリック→検証
(3)Console画面に移動
(4)上に書いたコードを丸々コピペしてEnter
以上!

元記事を表示

コード品質を改善できるツール

# Visual Studio Code (VSCode)の良いプラグイン

## Region folding

![Region folding](https://raw.githubusercontent.com/maptz/Maptz.VSCode.Extensions.customfolding/master/imgs/CSharp_region_wrap.gif)

## Better comments

![Better comments](https://raw.githubusercontent.com/aaron-bond/better-comments/master/images/better-comments.PNG)

## PHP DocBlocker
PHPDocBlockerの記述を容易にしてくれる。例えば、「/**」と入力して[Tab]キーを押せば、そのスケルトンを自動生成してくれる。また、「@」で始まるタグ名の補完も可能だ(PHP IntelliSenseではこれはサポートされていない)

![PHP DocBlocker](https://use

元記事を表示

【Laravel】php artisan migrateでハマったので、XAMPP環境でPostgreSQLを使ってみた。

migrateでエラーが出まくった。。。

いつもお世話になっているTechpitの教材で学習していた際に、migrateで思いっきりハマり、解決できなかったのでXAMPPでPostgreSQLを使えるようにしてみました。その際のメモです。

学習に使用している教材のリンク:
https://www.techpit.jp/p/laravel-vue-sns

こちら作りながら学べる学習教材で楽しみながらミドルウェア、認可、フロントエンドとの連携などかなり深いところ

あると便利な PHP の配列関数

## 作った理由

とあるプロジェクトで自動化システムを作っています。
大変複雑で、配列を使いまわしているうちに、何度も使う処理を必要にかられて関数にしました。

なんでこういう関数がないんだろう? と同じように思われている方の参考になれば幸いです。

* array_same … 単純ですが本当にこれがないと大変です…。
* array_remove … 同名の関数が PostgreSQL にはあります。PHP にはないのが不思議です。

2020.03.19 ブログの方でコメントを頂き、array_same を短縮化しました。pickles さん、ありがとうございます。

## 配列の中の値がすべて同じか

“`php
/**
* 配列の中の値がすべて同じか
* @param array $array 配列
* @return bool
*/
function array_same($array)
{
return count(array_unique($array)) === 1;
}
“`

## 配列から指定の値を削除

“`php

PHP 配列に連想配列を入れる

# 目的

– 配列の中に連想配列を入れる方法をまとめる

# 実施環境

– MacOS上のローカル環境にテスト用スクリプトファイルを作成してVisual Studio Codeのデバッグを用いて結果を確認した。
– 下記にVisual Studio CodeでPHPのデバッグ環境を構築する際の手順をまとめた記事へのリンクを記載する。
– [https://qiita.com/miriwo/items/e0a41308e042e34ebf78](https://qiita.com/miriwo/items/6edd6e1817def4fc11d5)
– 下記に実施環境の詳細な情報を記載する。

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.3) |
| ハードウェア | MacBook Air (11-inch ,2012) |
| プロセッサ | 1.7 GHz デュアルコアIntel Core i5 |
| メモリ | 8 GB 1600 MHz DDR3 |
| グラフィックス | Intel HD Gra

WordPressでプラグインを使わずに関連記事を表示する方法 2020年版

関連記事は、関連度やタグもカテゴリも含むなど高度な設定が必要な場合はプラグインを使ったほうが早いかも。

ここでは簡単な関連記事の取得方法をまとめる。

## プラグイン使わず関連記事を実装
functions.phpに以下のコードを追記。

“`php
// functions.php
function my_get_related_posts( $post_id, $related_count ) {
// 記事のカテゴリを取得、タグでも可
$terms = get_the_terms( $post_id, ‘category’ );

if ( empty( $terms ) ) $terms = array();

// カテゴリ一覧のslugを作成
$term_list = wp_list_pluck( $terms, ‘slug’ );

// クエリの設定、投稿タイプはパラメータで変更できるようにしても良い
$related_args = array(
‘post_type’ => ‘post’, // 投稿タイプ

Azuriteでローカル環境構築(Docker + PHP + Azure Storage)

# 目的

Azuriteを利用してDocker + PHP + Azure Storageのローカル環境を構築します。
Dockerによるローカル環境構築を進めてきましたがStorageはAzureプラットフォームのを利用していたので、Azuriteを利用してローカル環境だけで完結させます。

# Azuriteとは

Azure Storageのエミュレーター。

[ローカルでの Azure Storage の開発とテストに Azurite エミュレーターを使用する](https://docs.microsoft.com/ja-jp/azure/storage/common/storage-use-azurite) (プレビュー)

## AzuriteかAzure ストレージ エミュレーターか

> Azurite は今後のストレージ エミュレーター プラットフォームです。Azurite は Azure ストレージ エミュレーターよりも優先されます。

ということなので今後もこちらを使っていけば良さそうです。

## Azuriteのインストール方法

> 3. Azurite