PHP関連のことを調べてみた

PHP関連のことを調べてみた

PHPのヒアドキュメントで作成したSQLクエリが急に効かなくなった

# 環境
| 名称 | バージョン |
|:-:|:-:|
| PHP | 7.4.26 |

# 問題
フレームワークなしのPHPで作成されたWebシステムを機能改修している中で、ヒアドキュメントを使ってSQLクエリを作っていた箇所があった。
別の担当者がその部分のソースを触って、その人がPJから去った後に自分が動作確認したら、触ったソースが関与している処理が機能していなかった。

# 解決方法
誤入力で入れたのであろうインデント1個に不幸にされてた\(^o^)/

“`test.php

元記事を表示

【PHP】ローカル変数とグローバル変数

# ローカル変数とグローバル変数
PHPの変数には**ローカル変数**と**グローバル変数**の2種類がある。
その2つの違いを解説していきたい。

## ローカル変数

**ローカル変数**とは、決められた範囲内(ローカルスコープ)でしか扱えない変数のことを言う。

“`php:ローカル変数

“`

Undefined variable という警告が表示されてしまった。
なぜかというと、関数user()内で定義されている変数nameと、関数外で定義されている変数nameは**全くの別物として扱われている**ためである。
関数user()内で定義されて

元記事を表示

[PHP8.4]MacOSでPHP 8.4を成功裏にインストールするためのチュートリアル

公式発表によると、[PHP 8.4](https://www.servbay.com)は2024年11月21日にリリースされる予定です。これは3つのアルファバージョン、3つのベータバージョン、および6つのリリース候補を通じてテストされます。

この大規模なアップデートは、PHPに一連の最適化と強力な機能をもたらします。私たちは、より良いコードを書き、より強力なアプリケーションを構築できるようにする最も興味深いアップデートと変更点を紹介することに興奮しています。

準備はできましたか?それでは、探索してみましょう!

### PHP 8.4の新機能

**1. DOM拡張機能がHTML5をサポート**

PHP 8.4のDOM拡張機能は、HTML5の解析とシリアライゼーションをサポートすることで大幅にアップグレードされました。これにより、HTML5特有のタグやJavaScriptに埋め込まれたHTMLの扱いに頭を悩ませることはなくなります。新しいDOM\HTMLDocumentクラスを使用するだけで、HTML5コンテンツが正しく処理され、現代のWeb標準に準拠します。
文字列からHTML

元記事を表示

ハッシュ探索法

## ハッシュ探索法とは

探索しやすいようにあらかじめ関数を使ってデータを格納しておき、探索の際は格納するのに使った関数を使ってデータを探す探索法。

### データを格納するアルゴリズム

#### 対象データ

“`php
$arrayD = [12, 25, 36, 20, 30, 8, 42];
“`

#### ハッシュ関数
ハッシュ値 = `$arrayD`のデータ % 11

#### ハッシュ化したデータを格納する配列

0が11個の配列

“`php
$arrayH = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
“`
#### フローチャート

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733055/2c864156-27d4-ac94-f10b-681119f28ee7.png)

#### 処理結果

結果として、以下のような配列が作られる
“`php
$arrayH = [42, 12, 0, 25, 36, 0, 0

元記事を表示

Build a network tunnel using Python and the LAMP(PHP) stack.

## Getting Started
Hosting services based on the LAMP stack (Linux + Apache + MySQL + PHP), commonly known as shared hosting, can be obtained at an affordable price in any country. If you are lucky, you can get the infrastructure for one-hundredth the cost of acquiring a virtual server.

I was interested in creating a proxy (also known as a VPN) using shared hosting, and I recently succeeded. I considered an implementation similar to [Shadowsocks](https://shadowsocks.org/) as the most ideal and

元記事を表示

頻繁にランダム番号が重複しないようにするクラス.

頻繁にランダム番号が重複しないようにするクラスです.
ご自由にコピペでご使用ください.

https://github.com/taoka-toshiaki/randomizeClass

“`php:randomizeClass.php

元記事を表示

STYLYがPHPカンファレンス香川2024でのPico4とApple Vision Proの体験展示してみた:準備とスキルトランスファー編

こんにちは、uechanです。

2024年5月に開催されたPHPカンファレンス香川2024に参加し、STYLYのデモ展示を行いました。
本記事では、デモ展示の下準備として行ったスキルトランスファーや技術のブラッシュアップについて詳しく紹介します。

## イベント概要
PHPカンファレンス香川は、PHPを中心としたWeb技術に関するカンファレンスです。PHPユーザーやPHPに興味がある、あるいはWeb技術全般に興味がある方々が集まり、さまざまなトークセッションや交流を行うイベントを目指しています。
自分はSTYLYのスポンサー展示を行うために参加しました。

## 展示内容の紹介
今回は、Pico4を使ったセッション機能でのMR/VR作品の体験と、
Apple Vision Proを使った作品の体験を展示しました。
Apple Vision Proは四国初上陸です!!

元記事を表示

急いですぐにLaravelの作業がしやすい環境をDockerのDebianで作る

今回は急いでLaravelの動く環境が欲しいので急いですぐになんとかします!

## すぐ着手

まずDockerをパパッと起動します。

“`bash
cd oisogi-laravel
docker run -it –rm -p 8080:8080 -v .:/opt debian
“`

必要なものまとめてインストールします。

“`bash
apt-get update
apt-get -y install php php-sqlite3 php-curl php-fdomdocument composer
“`

MySQLのためだけにdocker-composeする時間はもったいない印象です。
時短のため.envをSQLite3で使うよう一旦ちょっと変えます。
gitを使っている場合はここで`.gitignore`によって無視されるパスを指定するのが時短ポイントです。

`DB_`の部分は例えばこんな感じです。

“`bash
DB_CONNECTION=sqlite
DB_DATABASE=database/db.sqlite
“`

ほぼいつものコマンド

元記事を表示

WordPressにおける動的ルーティングの実装方法

# はじめに

WordPressで動的ルーティングを実装する方法のサンプルです。

# 問題

WordPressの修正案件。
地域の出し分けをカスタム投稿でやってほしいとのこと。
差分少ないし、記事を何十も作るのダルメシアンだったので、動的ルーティング使って解決。
ただLaravelやReactの感覚でいたから、予想の10倍は苦労した。

# 解決方法

“`functions.php

function custom_rewrite_rule()
{
add_rewrite_rule(
‘^area/([^/]*)/([^/]*)/?’,
‘index.php?pagename=city&prefecture=$matches[1]&city=$matches[2]’,
‘top’
);
}
add_action(‘init’, ‘custom_rewrite_rule’);

function custom_query_vars($vars)
{
$vars[] = ‘prefecture’;
$vars[] = ‘city’;
$vars[] =

元記事を表示

STYLYがPHPカンファレンス香川をスポンサーしてみた。

# PHPカンファレンス香川のスポンサー出展の経緯

 AppleVisionProが2/2に発売され、いろいろなルートを使って会社で数台調達することができました。そのときに、「そういやPHPカンファレンス関西に行くし、その時に被ってったら、たぶん注目されて、おもろいことになるから借りていこう」と思いつき、@afjk から会社のAppleVisionProを借りて、単身PHPカンファレンス関西に突っ込むことを画策しました。
 この時、参加登録はしてたものの、登壇ではなかったので、まぁどうすっかなーという気持ちはありつつ、あまり不安もありませんでした。というのも、こういうカンファレンスでは登壇の裏でLTイベントをしていることが多く、そういう時には飛び込みもOKだという感触がありました。したがって、飛び込めれば何とかなるだろう。という気持ちで突っ込みました。で、そのようなLTイベントが予定通り?発生していたので、とりあえず適当な自己紹介をして、

**まぁ、俺が誰であるかとか、どの会社の人間であるかは興味ないと思うんだ。
でも、俺は10日前にアメリカでしか販売されてない最新のApple

元記事を表示

怠けるための必需品!2024年の生産性向上のための効率的な開発ツール

> プログラマーであることは、絶え間ないコードの流れと要求で挑戦的です。仕事とリラックスのバランスを取ることは難しいですが、作業負荷を軽減する強力なツールがあります。「適材適所」—この記事は、便利なツールを発見するのに役立ちます。

### DevDocs – オフラインドキュメントのコンパニオン

[DevDocs](https://devdocs.io/)は、オフラインAPIドキュメントブラウザで、多言語対応しており、開発者に技術ドキュメントへの迅速かつ効率的なアクセスを提供します。フロントエンドからバックエンド、モバイル開発まで、公式ドキュメントを統合し、洗練されたユーザーフレンドリーなインターフェースを提供します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782463/8b2f7f75-8f28-cbd1-39d5-855539096af8.png)

### ServBay – 開発者の夢

[ServBay](https://www.servbay.com)は、ウェ

元記事を表示

二分探索法(バイナリサーチ)

## 二分探索法(バイナリサーチ)とは

探索する範囲を半分に絞り込みながら探索を進めるアルゴリズム。
あらかじめ昇順か降順に整列されているデータが対象となる。

### 対象データ

以下のように昇順か降順に整列されているデータ
“`php
$array = [11, 13, 17, 19, 23, 29, 31];
“`

### フローチャート

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733055/8a75e4d2-1df8-47f8-51be-13b0cc8d445f.png)

### 解説

以下の変数を用意する
`head`:先頭のデータの添字
`center`:真ん中のデータの添字
`tail`:末尾のデータの添字

①真ん中の要素を選ぶ
→`(head + tail) / 2`で求め、`center`へ代入する
②真ん中と目的のデータを比較する
→データが目的のデータと一致した場合は、探索終了
→データが目的のデータと一致しない場合は③へ移る
③探索の

元記事を表示

WordPressでJavaScriptを埋め込む方法

## はじめに
今回はWordPressでモーダルを実装する際にJavaScriptをどこに埋め込めばいいか悩んだのでその解決策をまとめる
## 問題点
WordPressでJavaScriptのコードをどのphpファイルに埋め込めばいいのか
## 解決策
footer.phpの“`“`の直前に埋め込むことで解決する
ただしこれは非推奨な方法のようなので別の方法は後日追記する

“`footer.php




“`

元記事を表示

mysqliを使ってPHPからMySQLに接続する方法

# はじめに
`mysqli_connect`を用いて、MySQLに接続する方法と切断する方法のみを説明します。
本記事では、データの取得や挿入などは触れていません。

# 事前知識
### mysqliとは
`mysqli`(MySQL Improved)とは、PHPでMySQLデータベースとやり取りするための拡張機能のこと。
### MySQLデータベースとは
MySQLデータベースは、データを効率的に保存、管理、検索するためのシステムのこと。
ユーザー情報、商品情報、ブログ投稿など、ウェブサイトの様々なデータを保存するために使われる。
# mysqliを使ってデータベースに接続する
### `mysqli_connect`を使ってデータベースに接続する
`mysqli_connect` 関数を使ってMySQLデータベースに接続する。
“`php
mysqli_connect(
$hostname,
$username,
$password,
$dbname
);
“`
上のように、ホスト名、ユーザー名、パスワード、データベース名の順で書く。

続いて、接続を確認するために、変

元記事を表示

【PHP】PHP勢の自分がどうしてもシャットダウンをしたくない理由

## はじめに
こんにちは! 中学3年生のWardHamamatsu67です! 今回は、PHPをよく使う自分がとある事情でシャットダウンをやりたくなくなった話をしようと思います。
## なぜ??
なぜ、自分がシャットダウンをしないようになったのかは、単純にXAMPPが原因です。 XAMPPとは、以前別の投稿で説明した通り、PHPの開発環境となるもので、PHPを始める方には絶対必要となります。

XAMPPの使い方についてはこちら

https://qiita.com/WardHamamatsu67/items/ed4e812132e0297ccd8e

説明がかなり短くて雑ですがご了承ください。(本当にすみません。)

で、このXAMPPくんなんですが、シャットダウンするとそれまで動いていた、**Apacheや、MySQLなどが停止**してしまうんです。そして、この状態でPHPを実行しようとすると、次のように「localhostで接続が拒否されました」と出るんです。
![20210223

元記事を表示

【PHP】西暦から和暦・和暦から西暦を算出する

[西暦から干支・干支から西暦を算出する](https://qiita.com/Kokusui/items/79da562e4e979aea1825 “西暦から干支・干支から西暦を算出する”)に続き暦ネタ。
#### 西暦→和暦
“`sei2wa.php
function sei2wa(string $datestr = NULL) {
//datestrで与えられた年月日(の属する暦年)の和暦年を返す ただし明治元年以降
//datestrを年だけにした場合はその年の1月1日の和暦を算出
//datestrが空欄の場合は今日の和暦
//datestrが日付として正しくない場合はNULLを返す
if ($datestr) {
$datestr = mb_convert_kana($datestr, ‘n’);
if (is_numeric($datestr)
&& preg_match(‘/^[12][089]\d{2}$/’, $datestr)
&& intval($datestr) >= 1868
&& intval($datestr) < 2

元記事を表示

【攻略】ServBayでわずか3分でWeb開発環境を構築

> ServBayは、統合されたユーザーフレンドリーなローカライズされた[Web開発環境](https://www.servbay.com)を提供します。ServBayを使用すると、開発者は数分でローカル開発環境をセットアップできます。これは、PHPやNode.jsのようなインストールとメンテナンスの問題に効果的に対処し、テストエンジニアや小規模チームにとっても便利です。さらに、迅速な環境アップグレードと継続的なメンテナンスも可能にします。

このガイドは、ServBayのセットアッププロセスを簡単に理解できるように設計されています。初心者でも複雑さに悩むことなく、スムーズで簡単にServBayをデプロイできるようにします。

### 準備

まず、ServBayをダウンロードしてインストールする必要があります。ダウンロードする前に、システムが以下の要件を満たしていることを確認してください:
– オペレーティングシステム: macOS 12.0 Monterey以上
– プロセッサ: IntelまたはApple Silicon (M1/M2/M3) チップ
– ストレージ: 10GB以

元記事を表示

入力フォームの整数判定【PHP】

# はじめに
bdrccです。
ポートフォリオに掲載する、PHPの制作物を作っています。
今回の記事は、フォームに入力された内容で四苦八苦した経緯を書いていきます。

# 整数がほしい
パスワードの桁数と個数をフォームに入力し、PHPで実行することで、英数字から作成されたパスワードを、複数個自動生成するWebアプリを作成しています。
数字入力の枠のエラー対応を行いました。

### 入力されていない 場合
-> HTML の inputタグに `required` を追加して対応
### 数値ではない または 負の数 の場合
-> PHP の `is_numeric(入力内容)` で判定可能

ここまでは順調でした。
問題はここからです。

桁数を6〜10、個数を1〜10としていたのですが、範囲内小数の場合、小数部分を切り上げて自動判断していました・・・。

# 対応
1.`is_int()` を使用
->文字列扱いで認識され、正しい自然数でも作動せず
2.`is_numeric() and $x==intval($x)` を使用
->無事、範囲内整数

元記事を表示

線形探索法(リニアサーチ)

## はじめに

線形探索法についてまとめる

### 線形探索法(リニアサーチ)とは

先頭から順番に調べて探す探索アルゴリズム。
リニアとは一直線という意味。探索が片方からもう片方へ一直線に進んでいくイメージ。
検索エンジンで使われている。
探索効率はそれほど良くない。

### 例

#### 対象データと探す値

以下の配列から5という整数データが入っているかを探す。

“`php
$array = [4, 2, 3, 5, 1];
“`

#### フローチャート

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2733055/f0c94493-f474-1758-4309-abafc92af027.png)

元記事を表示

HEIC(HEIF)画像をJPEGに一括変換する

# はじめに
 iOS(11以降)では写真を撮影したときに、特に設定をしていなければHEIFと呼ばれる方式で画像を保存します。拡張子はHEICです。この方式は高画質かつファイルサイズが小さいので便利そうなのですが、Apple系のOS以外ではまだサポートが充実していません。今回はHEIC画像を一括(バッチ)でJPEGに変換する方法をいくつか試してみます。

# Windows版ImageMagickを使う
 ImageMagickは様々なフォーマットに対応したツールで、最近HEICを読み込めるようになりました。Windowsバッチで次のように書くと、batファイルを設置した場所と同じ階層のHEICファイルを全てJEPGに変換できます。PATHを通すことができない場合はImageMagickの場所をフルパスで書くことで実行できます。

“`bat
for %%f in (*.HEIC) do (
start convert.exe “%%~nf”.HEIC “%%~nf”.JPEG
)
“`
この例はマルチプロセスで、処理するファイル数と同じ数のプロセスが実行されま

元記事を表示

OTHERカテゴリの最新記事