PHP関連のことを調べてみた2022年09月07日

PHP関連のことを調べてみた2022年09月07日

Python,Ruby,PHP,Java,JavaScript,Perlの文法・構文の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlの文法・構文の比較

# Python

https://qiita.com/Fendo181/items/a934e4f94021115efb2e

# Ruby

https://qiita.com/Fendo181/items/eb2cb17f32d99aa01f59

# PHP

https://qiita.com/7968/items/d739e926189e219273bd

# Java

https://qiita.com/tomonori_hioki/items/cec47a366208d43d7339

# JavaScript

https://qiita.com/Fendo181/items/cca476da99e8f09b6b97

# Perl

https://perlzemi.com/blog/2

元記事を表示

1万件のCSVを読み込ませるPHPコード雛形。

# 1万件のCSVを読み込ませるPHPコード雛形です。
#### 動作環境はPHP8系
+ Read_csv_class.php…CSV読み込みを行っているファイル(雛形です)。
+ index.php…ajaxを使用しRead_csv_class.phpを呼び出しているファイル
+ [こちら](https://testdata.userlocal.jp/)のCSVダミーデータを改変して動作確認をしています。
#### ※ fgetcsv($this->handle, null, “,”);の箇所はバージョンより要確認!

“`php:Read_csv_class.php

元記事を表示

【PHP】URLパス部分に特定の文字列が含まれるかどうかの条件分岐【str_contains()】

## パスを取得
“`
$path = $_SERVER[‘REQUEST_URI’]
“`
PHPが提供するスーパーグローバル変数$_SERVERを利用する。
‘REQUEST_URI’に現在アクセスされているパスが格納されている。
因みに「プロトコル(httpsか?) + ホスト名(localhostなど) + パス(/index.phpなど) = 現在のURL」となる。

## PHP 8以上では`str_contains()`を使用
:::note
`strpos()`をメインで説明していましたが、コメントにて「文字列が含まれるかどうかをチェックするには `str_contains()`を使うとよいのではないでしょうか」といただいたので`str_contains()`の内容を追加しました。ありがとうございます!
:::
### 条件分岐
“`
if( str_contains( $path, ‘hogehoge’ ) {
// $pathにhogehogeが含まれる場合

} else{
// $pathにhogehogeが含まれない場合

}
“`
PHP 8で追加さ

元記事を表示

filter_varの検証フィルタ「FILTER_VALIDATE_DOMAIN」の動作を確認するためにphptファイルにテストパターンを追加して実行してみた

### この記事を書くきっかけ

2022年9月24日、25日に開催される「[PHP Conference Japan 2022](https://phpcon.php.gr.jp/2022/)」で「[FQDN(ドメイン名)のバリデーションが意外と面倒だった](https://fortee.jp/phpcon-2022/proposal/fbbbf348-e535-4537-896e-ad771e46759b)」というタイトルで登壇予定なんですが、登壇スライドを作成している途中に調査したphptについてはLT(4分)の枠内に収められそうにないので、こちらでまとめておこうと思った次第です。

### 動作確認環境
– PC: MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)
– OS: macOS Monterey 12.0.1
– CPU: 2.3 GHz クアッドコア Intel Core i7
– Memory: 32 GB

### 事前準備

任意のディレクトリにPHP 8.1.10(2022年9月8日時点の最新版)のソ

元記事を表示

【PHP基礎復習9】掛け算と割り算

[問題]
モモさんは毎朝、近所にあるお城のお堀の周りをジョギングしています。
1周Aメートルのお堀をB周した場合、合計何キロメートルになるか求めなさい。

# コード
“`PHP
$input_1 = fgets(STDIN);
$input_2 = fgets(STDIN);
echo $input_1 * $input_2 /1000, PHP_EOL;
“`

↓ 1000、3と入力
# 結果
“`
3
“`

★何キロメートルかと聞かれているので、1000で割る。

元記事を表示

【PHP】json_decodeに特定の文字列を入れるとINF(無限)になる

毎週火曜のラブライブだけを生きがいにしてたのに今週は休みと知ってとてつもなく絶望している今日

## 前提

phpにはjson形式の文字列を配列やオブジェクトなどに変換してくれる`json_decode`という関数が存在します。

関数についての細かいことは[省略](https://www.php.net/manual/ja/function.json-decode.php)

このjson_decodeは基本的に非json形式の文字列を入れるとnullを返します。
“`php
// NULL
json_decode( ‘abcdefg’ );
“`

また、入力値が整数の場合はint、少数の場合はfloatとして数値が返ってきます。
“`php
// int(123456)
json_decode( ‘123456’ );

// int(123456)
json_decode( 123456 );

// float(123.456)
json_decode( 123.456 );
“`
ここまでは問題なし。

## 本題
問題なのは入力された文字列が、指数表記として解釈

元記事を表示

【PHP基礎復習8】絶対値

[問題]
次の入力値の絶対値を求めよ。

# コード
“`PHP
$input = fgets(STDIN);
echo abs($input),PHP_EOL;
“`

↓ -4と入力

# 結果
“`
4
“`

☆絶対値を求める
→ abs( )

元記事を表示

【PHP基礎復習7】掛け算②

[問題]
ユキさんは、部屋の壁にポスターを貼ろうとしています。
1枚で幅Acmのものを4枚貼ると、幅は合計何cmになるでしょうか。

# コード
“`PHP
$input = fgets(STDIN);
echo $input*4, PHP_EOL;
“`

↓ 30と入力

# 結果
“`
120
“`

元記事を表示

【PHP基礎復習6】最大値と最小値

[問題]
5つの入力値のうち、最大値と最小値を出力させなさい。

# コード
“`PHP
$input_1 = fgets(STDIN);
$input_2 = fgets(STDIN);
$input_3 = fgets(STDIN);
$input_4 = fgets(STDIN);
$input_5 = fgets(STDIN);
echo max($input_1, $input_2, $input_3, $input_4, $input_5);
echo min($input_1, $input_2, $input_3, $input_4, $input_5),PHP_EOL;
“`

↓ 3、5、4、9、6と入力

# 結果
“`
9
3
“`

☆最大値を求める
max($a, $b, $c);

☆最小値を求める
min($a, $b, $c);

☆配列の要素の最大値・最小値を求める場合は、以下のようにする。
“`php
$array = [1,5,6,4];
echo max($array);
“`
↓ 結果
“`
6
“`

元記事を表示

ゆめみコーディング試験サンプルをやってみた

ふらっと巡回していたら
https://qiita.com/rana_kualu/items/cd65cd6a05ac62c9a3e8
手頃な問題があったので記事を読む前に自分でやってみる。
https://www.yumemi.co.jp/serverside_recruit

CLIでCSV入力から平均値を計算してCSV出力する問題。

“`
create_timestamp,player_id,score
2021/01/01 12:00,player0001,12345
2021/01/02 13:00,player0002,10000
2021/01/03 12:00,player0021,100
2021/01/04 12:10,player0031,200
2021/01/05 12:00,player0041,300
“`

プレイヤーは1万人以下、入力行数は数千万行になるというところがポイントっぽい。

特に何も考えずに上から順にベタ書きしていく。

“`php

元記事を表示

Laravel Pint コードスタイル自動整形ツールのインストールと設定

## Laravel Pint

Laravel Pint(パイント)はコードスタイルの自動整形ツールPHP-CS-Fixerのラッパーライブラリです。

– GitHub: https://github.com/laravel/pint
– ドキュメント: https://readouble.com/laravel/9.x/ja/pint.html
– PHP-CS-Fixer: https://github.com/FriendsOfPHP/PHP-CS-Fixer
– PHP-CS-Fixer Configrator: https://mlocati.github.io/php-cs-fixer-configurator

## インストール

[Laravel v9.3.0](https://github.com/laravel/laravel/releases/tag/v9.3.0) からLaravelに標準搭載されています。

古いLaravelに導入する場合は下記のコマンドからインストールします。

“`shell-session
$ composer require

元記事を表示

【nginx】リクエストボディのサイズ上限を変更する

## 結論
`nginx`をWebサーバに採用、かつWebアプリケーションにファイルアップロードなどの機能を持たせる場合は`client_max_body_size`を適切な値に設定すること。

## 理由
`nginx`で受け付けるリクエストボディのサイズ上限を設定する、`client_max_body_size`のデフォルト値は1MBのため。
デフォルト値のままにしてデフォルト値を超えるファイルをアップロードしようとすると、HTTPステータス`413` `Payload Too Large`が返ってきてしまいます。

## 設定例

“`/etc/nginx/nginx.conf
http {
log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_f

元記事を表示

LaravelでURLのクエリパラメーターを取得する二つの方法と注意点

はいさい!ちゅらデータぬオースティンやいびーん!

# 概要

Laravelでは、URLのクエリパラメーターを取得する二つの方法を解説しながら、注意点とベストプラクティスを紹介していきます。

また、`Blade`と`Controller`でのそれぞれの構文も添えておきます。

### 背景

クエリパラメーターを取得するのには二つの方法があるから、どれを使えばいいか迷います。

しかも、使う方法によって動作と、 **_ニュアンス_** が微妙に違います。

**ニュアンス** というのは、使ったメソッドによって、ソースコーで伝わる意図が変わるということです。

使った手段の結果が一緒でも、伝わる意図が変わるということは小さなことに思えて、実は重要なことです。

# – 方法1 – `Request::input`メソッド

最もよく使われている方法は`Illuminate\Http\Request`の`input`メソッドかと思います。

## 使い方

まず、使い方を簡単に紹介します。これらのロジックは以下のURLを想定しています。

`http://localhost:8080

元記事を表示

カリー化とは

# 意味
– 関数を返す関数を作り、プログラムの共通化を図る。
– 言語に関係なく共通する概念であるが、ここではtypescriptで説明します。

# 例文
“`typescript:typescript
const add = (x:number) => (y:number) => x + y
const add1 = add(1)
const result = add1(2) // 3
“`

# 説明
関数addは引数xを受け取ると、`(y:number) => x + y`を返す関数。
add関数の引数として1を入れると、`(y:number) => 1 + y`の返すようになる。
返された関数の引数yに対して2を入れると、`(2) => 1 + 2`が成立され、3を返す。

# メリット
– 共通化によってバグを防ぐことができる。
– まとまった処理を分割することによって、複雑度を下げつことができる。

# 例文
“`typescript:typescript
const add = (x:number, y: number) => x + y
add(1, 2)

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの標準関数の比較

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlの標準関数の比較

# Python

https://qiita.com/hiroyuki_mrp/items/8bbd9ab6c16601e87a9c

# Ruby

https://qiita.com/sugamaan/items/d7871da28c0160b69609

# PHP

https://qiita.com/SRAUFactory/items/96ecd6d677c26a20b77a

# Java

https://qiita.com/p_shiki37/items/3902f4e3adc3aeb382f1

# JavaScript

https://qiita.com/uhyo/items/acd645744fa61c805097

# Perl

https://perlzemi.com/blog/

元記事を表示

PHP的(PHPStan)ジェネリクス型

PHPStanを使うとPHPでもジェネリクス型が使える

なのでこんな感じで書いてみたら…

“`

元記事を表示

Laravel Log::infoの使い方 ~ ログ出力

# 動作環境
・PHP: 8.1.10
・Laravel:9.27.0

# ファサード
“`php:Laravel
use Illuminate\Support\Facades\Log;
use Log; // エイリアスでもいける環境もあるみたいですが、私のは無理でした。
“`

# ログの基本
“`php:Laravel
Log::info(“ログ”);
Log::info($request);
“`

これでいけます。

# 出力先はこちら
storage/logs/laravel.log

他にもいろいろできるみたいです。
使用することがあったら追記します。

元記事を表示

【PHP】`firebase/php-jwt`でトークンをdecode時に { “status”: “\”kid\” empty, unable to lookup correct key” }のエラーが発生

## 概要
PHPでJWTの仕組みを実装する場合、[firebase/php-jwt](https://github.com/firebase/php-jwt)のライブラリが使用されることがあると思います。このライブラリを使用して、JWTのトークン作成からdecodeまでの実装は[PHP: JWT を使った認証](https://blog.sarabande.jp/post/123018347873)の記事が、参考になると思います。
さて、実際にトークンのdecodeを行う時に以下のような実装を行ったところ、` { “status”: “\”kid\” empty, unable to lookup correct key” }`というエラーが発生しました。
“`php
$decodedResult = JWT::decode($token, env(‘JWT_SECRET_KEY’), [‘HS256’]);
“`

なお、今回使用したライブラリのバージョンは`v6.3.0`です。

## 原因
[こちら](https://stackoverflow.com/a/7231065

元記事を表示

PHPの日付取得方法まとめ

# はじめに
主に自分用に、PHPで日付を取る方法をまとめています。
特に、前月や次月の日付を取得したいという場合、取得に注意が必要なので、以下にまとめておきます。

## 念のたPHPのバージョン
“`
PHP 7.3.29
“`

## 日付の取得・加算・減算
主にstrtotimeを使用した取得の仕方をまとめます。
“`php
//現在の日付のtimestamp
strtotime(“now”)

//現在の日付をyyyy/MM/dd HH:mm:ssの形式で(デフォルトはUTC。変更したい場合はphp.iniのdate.timezoneを変更)
date(‘Y/m/d H:i:s’, strtotime(‘now’));

//1年前・1年後
date(‘Y/m/d H:i:s’, strtotime(‘-1 year’));
date(‘Y/m/d H:i:s’, strtotime(‘+1 year’));

//1ヶ月前・1ヶ月後
date(‘Y/m/d H:i:s’, strtotime(‘-1 month’));
date(‘Y/m/d H:i:s’, strt

元記事を表示

【PHP基礎復習5】文字列から数値のみを抽出する

[問題]
入力された文字列から数値の部分だけ取り出して出力しなさい。

# コード
“`PHP
$input = fgets(STDIN);
echo preg_replace(‘/[^0-9]/’, ”, $input_line), PHP_EOL;
“`

↓ 15kgと入力
# 結果
“`
15
“`

☆文字列から数値のみを抽出する
preg_replace(正規表現, 置換後の文字列, 対象の文字列);

元記事を表示

OTHERカテゴリの最新記事