- 投稿日:2020-11-19T23:58:19+09:00
composer requireがメモリ不足で失敗しないために
この記事の目的
パッケージ間の依存関係の解消に
メモリを多く消費するパッケージ ( 筆者が遭遇するケース:Larastan ) を、デフォルトの設定 ( 通常使用時には上限128MB[php.ini],
Composer使用時には上限1.5GBまで拡張される ) のまま、インストール(composer require)を試みると、
次のように標準エラー出力されます。Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) Check https://getcomposer.org/doc/articles/ troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errorsエラー文に書いてあるComposer公式URLにアクセスすると、
2種類の解決策が提示されていて、1番目の解決策の方は、既に多くの先人達が
Qiitaにたくさん記事を残してくださっていました。ただ、バージニア州に拠点を置くagileana社のブログ記事を読んで以来、
私は2番目の解決策の方が好ましく感じているので
そちらも推したいと思い執筆に至りました。表現の誤りや「もっとこうしたら便利だよ」といったアドバイスなどありましたら、
教えて頂けると勉強になります。筆者の実行環境
software version Docker 19.03.13 Docker Compose 1.27.4 PHP 7.4 コンテナのベースイメージ ( FROM命令で指定したイメージ ) は、
php:7.4-fpm を使用してします。なぜこの方法が好ましいと思ったか?
agileana社のブログ記事の中で
Symfonyを採用したプロジェクトに携わっていたFlynn氏が
記しているこの部分です。My initial thought to fix this issue was to modify the memory_limit setting found in my PHP main configuration file,
but it will not only apply for the PHP CLI but to all the PHP process that I’m running (i.e. Local web server and Symfony commands.)
This is a side effect I was not willing to accept.
I started to research about this case and found a very straightforward solution to it and it will only apply to the Composer command you apply it to.
The solution is to use the COMPOSER_MEMORY_LIMIT environment variable, setting its value to -1. It can be added to the current Terminal session with「PHPのメイン設定ファイル(php.ini)の
memory_limitディレクティブの値を
直接、無制限にしてしまうと、
PHP CLIに適用されるだけでなく、
ローカルWebサーバやSymfonyフレームワークのコマンドからの
メモリ使用制限までも、無制限になってしまうため、
そういった副作用を受けたくありません。」「composerコマンド実行時のみ、メモリ上限を引き上げる方法を見つけました。」
と書いてありますね。
ちなみに、私がメインで触っているLaravelも、
vendorディレクトリ下で動くたくさんのSymfonyで書かれたプログラムに
お世話になっていますから親近感がありますね。変更方法
ディレクトリ構成はこうなっています。
$ tree -L 3 . ├── docker │ ├── db │ │ └── data │ ├── nginx │ │ └── default.conf │ └── php │ ├── Dockerfile │ └── php.ini └─── docker-compose.ymlコンテナは3つ
- appコンテナ (PHP環境)
- nginxコンテナ
- dbコンテナ
[手順1] コンテナ内で使用しているcomposerのPATHを確認
$ which composer /usr/bin/composer
[手順2] environmentキーに環境変数COMPOSER_MEMORY_LIMITを追加。
appコンテナ (PHP環境)
の部分に追記。docker-compose.ymlservices: app: environment: - COMPOSER_MEMORY_LIMIT= -1 /usr/bin/composer
- 値を
-1
にすると、無制限。
- [OK] 略称表記 (例: 2G )
- [OK] 数値表記 (例:2147483648 )
[手順3] docker-compose.ymlの変更を反映させるために再ビルドを実行。
docker-compose up -d --build appそもそも何にそんなにメモリを使用しているのか知りたい
composer require --dev nunomaduro/larastan --profile -vvv--profileオプション
タイムとメモリ使用量を表示する。
-vvvオプション
インストール時の挙動を詳細に表示する
(-v
よりも、-vv
、そして、-vvv
と、v
の数が増えると、
より詳しく表示してくれます。)実行すると、このようになります。
root@79255afbc2bf:/var/www/html# composer require --dev nunomaduro/larastan --profile -vvv Reading ./composer.json Loading config file ./composer.json Checked CA file /etc/ssl/certs/ca-certificates.crt: valid Executing command (/var/www/html): git branch --no-color --no-abbrev -v Reading /root/.composer/composer.json Loading config file /root/.composer/composer.json Reading /var/www/html/vendor/composer/installed.json Reading /root/.composer/vendor/composer/installed.json Running 1.10.13 (2020-09-09 11:46:34) with PHP 7.4.11 on Linux / 4.19.76-linuxkit [9.2MiB/0.01s] Downloading https://repo.packagist.org/packages.json [9.3MiB/0.87s] Writing /root/.composer/cache/repo/https---repo.packagist.org/packages.json into cache [9.3MiB/0.87s] Reading /root/.composer/cache/repo/https---repo.packagist.org/p-provider-2013.json from cache [12.6MiB/0.89s] Reading /root/.composer/cache/repo/https---repo.packagist.org/p-provider-2014.json from cache [19.8MiB/0.93s] Reading /root/.composer/cache/repo/https---repo.packagist.org/p-provider-2015.json from cache [31.7MiB/0.98s] Reading /root/.composer/cache/repo/https---repo.packagist.org/p-provider-2016.json from cache [46.6MiB/1.05s] Reading /root/.composer/cache/repo/https---repo.packagist.org/p-provider-2017.json from cache [68.9MiB/1.15s] Downloading http://repo.packagist.org/p/provider-2018%2481dd16ef8b70152a886f398fcf7d35c20870bf64605fbcf78e7fb9baac1f5ac2.json . . . (中略) . . . [860.0MiB/174.09s] Generating optimized autoload files [866.5MiB/209.97s] > post-autoload-dump: Illuminate\Foundation\ComposerScripts::postAutoloadDump [870.4MiB/210.14s] > post-autoload-dump: @php artisan package:discover --ansi [870.4MiB/210.14s] Executing command (CWD): '/usr/local/bin/php' -d allow_url_fopen='1' -d disable_functions='' -d memory_limit=' -1 /usr/bin/composer' artisan package:discover --ansi [870.4MiB/211.65s] Discovered Package: facade/ignition [870.4MiB/211.65s] Discovered Package: fideloper/proxy [870.4MiB/211.65s] Discovered Package: laravel/tinker [870.4MiB/211.65s] Discovered Package: nesbot/carbon [870.4MiB/211.65s] Discovered Package: nunomaduro/collision [870.4MiB/211.65s] Package manifest generated successfully. [867.2MiB/211.79s] 56 packages you are using are looking for funding. [867.2MiB/211.79s] Use the `composer fund` command to find out more! [867.2MiB/211.79s] Memory usage: 867.22MiB (peak: 1783.7MiB), time: 211.79s root@79255afbc2bf:/var/www/html#無事に、インストールできました!!
(余談) ちなみに、Allowed memory size of 1610612736 bytes exhaustedって数字は何?
1,610,612,736 bytes = 1.5 * (2^30) = 1.5 * (2^10) * (2^10) * (2^10) = 1.5 * 1,024 * 1,024 * 1,024 = 1.5 GBこの記事の冒頭で触れた、
Composer使用時のメモリ上限の1.5GB
を使い果たしてしまいました。。。
ということですね!Composer使用時にメモリ上限が1.5GBまで引き上げられる資料の参照
Note: Composer internally increases the memory_limit to 1.5G.
まとめ
メモリリークやcomposerについて調べるとても良い機会になりました。
思いの外、長くなってしまいましたが
ご覧頂きありがとうございます。
- 投稿日:2020-11-19T23:29:33+09:00
[Laravel] コードをコミット時に自動整形する
やりたいこと
複数人で開発時に、フォーマットを統一したい。
自動整形するやつ入れても実行し忘れるので、コミットのタイミングで何も考えることなく整形できるようにしたい。やりかた
brainmaestro/composer-git-hooks
というパッケージを使うと、git hook(gitの特定タイミングで色々できる
)を簡単に使えるそして
friendsofphp/php-cs-fixer
を使うと、コードの規約違反を指摘/修正してくれるまずはインストール
composer require --dev brainmaestro/composer-git-hooks composer require --dev friendsofphp/php-cs-fixerつぎに設定
composer.json
のextra
に"hooks"
を追加
pre-commit
をフックに、php-cs-fixer
を使って自動フォーマットする。composer.json"extra": { "laravel": { "dont-discover": [] }, "hooks": { "pre-commit": [ "./vendor/bin/php-cs-fixer fix .", "git add ." ] } },反映して完了。
./vendor/bin/cghooks update
- 投稿日:2020-11-19T23:20:27+09:00
Intercomの会話データぜんぶ抜く
TL;TR
https://gist.github.com/YoshiteruIwasaki/3edd71eb1d968fcfa4c56ef7a0bcfbd8
からファイルをダウンロードする。
<YOUR API KEY>
の箇所を書き換える。IntercomのPHPのSDKを同じ階層にcomposer経由でダウンロードする。
composer require intercom/intercom-php php-http/guzzle6-adapter以下のコマンドで実行する。
php index.php解説
IntercomのAPIを純粋に片っ端から叩いてデータを集めてきて最後に配列にして1行ずつCSVに書き出しています。
Intercomの画面上から会社やユーザー情報はCSVエクスポートできます。
会話のデータもエクスポートできますが、過去2年分でサマリーのみになるため、細かな会話のやり取りを出力するにはAPIを使う方法しかありません。(個々の会話の画面から plain text でダウンロードするボタンもありますが、件数が多いと大変かと思います。)処理に時間がかかる
IntercomのAPIはレスポンスがそんなに早くなく、4年ほどの会話データおよそ2万行を抽出するのに10時間くらいかかりました。
RateLimitに引っかかることはなさそう
IntercomのAPIはたまにタイムアウトしてしまいます。
このスクリプトを回してる途中にRateLimitに引っかかるかなと思っていましたが、レスポンスが爆速でもないので引っかからずに最後まで処理できるかと思います。
https://developers.intercom.com/intercom-api-reference/reference#rate-limitingタイムアウトするなど途中で処理が止まってしまうとまた最初からやり直しになってしまうため、会話データは最後にまとめてではなく1行ずつCSVに書き出すようにしています。
APIの結果をファイルに保存する
https://gist.github.com/YoshiteruIwasaki/3edd71eb1d968fcfa4c56ef7a0bcfbd8#file-index-php-L69
file_put_contents("admins.dat", serialize($admins));のように配列を全部シリアライズしてファイルに書き出しているのは、途中でタイムアウトして失敗したときはそれ以前のAPIコール部分はファイルをデシリアライズしてそれを代替として使えるようにするためファイルに保存しています。
会話データのhtmlタグ除去
パラメータに
'display_as' => 'plaintext'
を指定することでタグが除去されます。https://gist.github.com/YoshiteruIwasaki/3edd71eb1d968fcfa4c56ef7a0bcfbd8#file-index-php-L124-L126
$result = $client->conversations->getConversations([ 'display_as' => 'plaintext' ]);IntercomのAPI設計は微妙
ページングの処理が微妙
微妙というか過渡期というか、ページングの処理がまちまちです。
AWSをはじめ多くのAPIの設計が
nextToken
でページング処理をしていると思いますが、https://developers.intercom.com/intercom-api-reference/reference#pagination
にあるようにパラメータに
page=
で渡すパターンが中心です。(v2.3時点)contactsだけはなぜか
"next": { "page": 4, "starting_after": "1HaSB+xrOyyMXAkS/c1RteCL7BzOzTvYjmjakgTergIH31eoe2v4/sbLsJWP\nIncfQLD3ouPkZlCwJ86F\n" }のようにしてページ番号とともにページ送りをするためのトークンがセットされています。
https://developers.intercom.com/intercom-api-reference/reference#pagination-cursor
contacts取得時のページ送りの処理
https://gist.github.com/YoshiteruIwasaki/3edd71eb1d968fcfa4c56ef7a0bcfbd8#file-index-php-L86-L88
if (! empty($result->pages->next)) { $result = $client->contacts->nextCursor($result->pages); }とそれ以外のページ送りの処理
https://gist.github.com/YoshiteruIwasaki/3edd71eb1d968fcfa4c56ef7a0bcfbd8#file-index-php-L109-L111
if (! empty($result->pages->next)) { $result = $client->nextPage($result->pages); }が異なっているのは上記の理由からです。
逆にcontactsではnextPage()が動きません。
Intercom PHP SDK v4.4.2 の nextCursorPage バグ
2020年11月19日 時点での最新版 v4.4.2 には nextCursorPageの処理にバグがあります。
https://github.com/intercom/intercom-php/pull/323
でプルリクが出ていますが、APIを叩いたレスポンスをモデルに変換する処理が二重で行われているためエラーになります。
https://github.com/intercom/intercom-php/pull/323/files
のように修正する必要があります。
メインデータのレスポンスが微妙
管理者ユーザーの一覧データのレスポンスは
https://gist.github.com/YoshiteruIwasaki/3edd71eb1d968fcfa4c56ef7a0bcfbd8#file-index-php-L60-L62
foreach ($result->admins as $admin) { $admins[$admin->id] = $admin->name; }ですが、会社の一覧データのレスポンスは
https://gist.github.com/YoshiteruIwasaki/3edd71eb1d968fcfa4c56ef7a0bcfbd8#file-index-php-L104-L106
foreach ($result->data as $company) { $companies[$company->id] = $company; }だったりして、なぜか
$result->admins
のようなケースと$result->data
のようなケースがあるので注意が必要です。感想
IntercomのAPI叩いて会話のデータをCSV出力するのなんて世界のどこかに先人がいるだろう、と思っていましたが、Dockerのコンテナ上でCをコンパイルして会話データを取得するっぽいことをしてたりなんやかんやいいのがないので致し方なく自分でスクリプトを組みました。
とりあえず1回きりのデータ全出力、のつもりで作っているのでエラーハンドリングとかは無考慮です。
別にPHPじゃなくてPerlやRuby,Pythonでもいいんですが(JavaとNodeは下準備が多いので却下)
https://developers.intercom.com/building-apps/docs/sdks-plugins
用意されているSDKを見て、まあRubyより書き慣れているPHPで書いておくか、という判断をしました。
- 投稿日:2020-11-19T23:13:28+09:00
PHPで敷居の高い掲示板作ってみた
はじめに
前回、PHPで敷居の高い掲示板を作ってみた ~概要編~を書いてみたんですが、もっと詳しく書きたくなってきました(^^♪
なので、シリーズ化しようと思うのですが、項目がたくさんになりそうなので、リンクがまとまった記事を作っておきたいと思います。この記事について
この記事では、基本的にPHPのみによる「敷居の高い掲示板」の作り方を書いていこうと思います。敷居の高い掲示板とは、
メールアドレスの認証が絡んだ掲示板
であって、会員登録とかログインとかをせず投稿出来る手軽さと、管理者による投稿内容の管理がしっかりできるWEBアプリケーションです。
おしながき
以下に、各記事のリンクを張っていきます。ちなみに、0から100まで説明する気は無いです。重要だと思う事と、自分で考えた仕組みの中で記事にしておきたいもののみを書いていきます。
全部できる気がしませんが、気長に頑張りたいです(;^ω^)
- 概要編・・・PHPで敷居の高い掲示板を作ってみた ~概要編~
- HTTPの基本・・・[coming soon]
- Tokenの考え方・・・[coming soon]
- 一つのページでシーン管理・・・[coming soon]
- 入力フォーム・・・[coming soon]
- 閲覧ページ・・・[coming soon]
- 管理者ログインシステム(二段階認証)・・・[coming soon]
おわりに
なんか「おわりに」を書かないと気持ち悪いんで書いておきます。僕は今までこういった、自分で作る&その説明書を作る、っていうのをやりたかったです。完全に、ゲームプログラミングの館に影響されています。僕の青春をささげた思い出のWebサイトです。
という訳で、今回このような記事を作りました。それでは!
(まだ全然おわってないけどw)
- 投稿日:2020-11-19T22:48:31+09:00
可変変数と可変関数 (PHP)
可変変数
変数を要いて、変数を動的に変える。
class ClassName { private $hoge = 'ほげ'; private $fuga = 'ふが'; public function say(string $name = 'hoge') { echo "{$this->$name}です。よろしく。"; } } $class = new ClassName; $class->say('hoge'); // ほげです。よろしく。 $class->say('fuga'); // ふがです。よろしく。可変関数
動的に呼び出す関数(メソッド)を変える。
class ClassName { private $hoge = 'ほげ'; private $fuga = 'ふが'; public function say(string $name = 'hoge') { $method = "say$name"; $this->$method(); } private function sayHoge() { echo "{$this->hoge}だよ。みんな一度は聞いたことあるよね!!"; } private function sayFuga() { echo "{$this->fuga}です。まだ聞いたことがない人もいると思うので、よろしくお願いします。"; } } $class = new ClassName; $class->say('hoge'); // ほげだよ。みんな一度は聞いたことあるよね!! $class->say('fuga'); // ふがです。まだ聞いたことがない人もいると思うので、よろしくお願いします。
- 投稿日:2020-11-19T22:41:08+09:00
paiza攻略 よく使うもの一覧(スキルチェックD〜Cランク) ~PHP~
はじめに
この記事ではpaizaのスキルチェック(PHP)で僕がよく使ったものを一覧にしてまとめています。
主にDランク・Cランクの問題を解くことを想定していますので、参考になれば幸いです。
また間違っている箇所などありましたらご指摘いただけると幸いです。
随時更新していく予定です。基本系
trim
文字列の先頭および末尾にあるホワイトスペースを取り除く。
改行された値をそれぞれ「配列」にするために使う。
※paizaではほぼ無条件で入れると良い。PHP$input_line = trim(fgets(STDIN));
explode
" "で指定したもの(ここでは半角スペース)で文字列を分割して「配列」にする関数。
PHP$input_line = fgets(STDIN); //$input_line -> "250000 3" $arr = explode(" ",$input_line); //$arr -> ["250000","3"]
var_dump
デバッグ(プログラムの間違いを直すこと)に使う。
echoと違い配列の中身のデータ型などを細かく確認できる。PHPvar_dump($arr);
print_r
デバッグに使う
var_dumpと違い配列のキーと値だけを確認したい時に使う。
変数に代入も可。PHPprint_r($arr);
便利な書き方
$input_line = trim(fgets(STDIN));を繰り返す処理
PHPfor ($i = 0; $i < 7; $i++) { $input_line = trim(fgets(STDIN)); } //以下と同じ↓ $input_line = trim(fgets(STDIN)); $input_line2 = trim(fgets(STDIN)); $input_line3 = trim(fgets(STDIN)); . . . $input_line6 = trim(fgets(STDIN));
要素を順番に配列に追加する
PHPfor ($i = 0; $i < 5; $i++) { $arr[] = trim(fgets(STDIN)); // $input =trim(fgets(STDIN)); // array_push($array,$input); }
配列の値をそれぞれ変数に定義する
PHP$input_line = trim(fgets(STDIN)); [$a, $b] = explode(" ",$input_line);
配列の初期化
PHP$a = array(); //配列に要素を追加 $追加したい配列[] = 要素 $a[] = $num;
該当する出力が無い場合に指定の値を表示する
隠れ変数を使う。
主にfor文の中で使われる。PHP$sum = 0; $a = "ガパオライス"; if(strpos($a,"カレー") !== false){ //$aの中に'カレー'が含まれている場合 echo "カレーという文字がありました"; $sum += 1; } if ($sum == 0) { echo "None"; } //出力結果「None」よく使う関数系
str_split
文字を分割して配列に追加する。
PHP$input_line = trim(fgets(STDIN)); $arr = str_split($input_line);
str
n番目の文字を取得する。
PHP$str = "ABCDEFG"; echo $str[2]; //実行結果→「C」
range
A〜Zまでの文字をそれぞれ配列に追加する。
PHP$a = range('A', 'Z'); print_r($a); //実行結果 //Array //( [0] => A // [1] => B // [2] => C // ・ // ・ // ・ //)
array_search
配列の値を検索する。
PHP$result = array_search($input_line, $a); //配列$aの何番目に$input_lineの値があるかを調べる
abs
絶対値を求める。
PHP$a = abs(-100); echo $a; //実行結果「100」
strops
文字列内の部分文字列が最初に現れる場所を見つける。
PHP$a = "カレーライス"; if(strpos($a,"カレー") !== false){ //$aの中に'カレー'が含まれている場合 echo "カレーという文字がありました"; }
- 投稿日:2020-11-19T22:20:59+09:00
laravelで画像を再度指定せずに編集可能な機能を作成
初投稿です。これからプログラミング学習のアウトプット始めていこうと思います。
世の中のサイト(主にSNS)ってユーザーアカウントにアイコン(画像)が設定可能ですよね。
それを編集するときアイコン以外(名前、プロフィール等)だけ編集してアイコンはいじらない場合、アイコン画像はそのまま変更なしでプロフィールの変更ができます。
でも自分でlaravelでサイトを作ってみて気づいたのが画像に対してはoldヘルパーが適用されずどうやったらその機能を実現できるのかという点です。今回自分なりに思いついた実装方法を紹介していきます。
ルーティング
web.phpRoute::get('/posts/edit/{post}', 'PostsController@edit');暗黙の結合を使って編集ページにpostsテーブルからカラムを持っていきます
今回画像のカラム名はpathになります。if文を使って実装できた
PostsController@editpublic function update(Request $request, Post $post) { // 画像変更の確認 if(!empty($request->path)) { $file = $request->file('path'); $filename = $file->getClientOriginalName(); $request->file('path')->storeAs('public',$filename); $post->path = '/storage/' . $filename; }else { $post->path = $post->path; }編集ページのsubmitボタンが押されたとき、$request->pathがあれば(新たに画像が挿入されているなら)新たに画像に対してユニークな名前をつけそれを投稿の画像としてデータベースに登録、そうでないならば(画像が変更されていないなら)以前の画像のパスを再代入してデータベースに登録
これで実装ができました!普段使い慣れているサービスの機能を実装できると気持ちがいいですね
- 投稿日:2020-11-19T21:44:21+09:00
~全パターン~ 【php用】47都道府県の配列(連想配列)
どうも7noteです。ほぼ自分用メモです。
漢字ひらがなローマ字等、「県」のアリナシなどよく使われる全表記パターンの配列を用意。
順番は北から順(都道府県番号順)になっています。!!! 目次の利用を推奨 !!!
目次
- 1次元配列(普通の配列)
- ひらがな
- カタカナ
- 漢字(★)
- ローマ字(★)
- 2次元配列(連想配列)
- キーが[数字]
- [数字]=>ひらがな
- [数字]=>カタカナ
- [数字]=>漢字(★)
- [数字]=>ローマ字(★)
- キーが[ひらがな]
- [ひらがな]=>ひらがな
- [ひらがな]=>カタカナ
- [ひらがな]=>漢字
- [ひらがな]=>漢字 (不一致版)
- [ひらがな]=>ローマ字
- キーが[カタカナ]
- [カタカナ]=>ひらがな
- [カタカナ]=>漢字
- [カタカナ]=>ローマ字
- キーが[漢字]
- [漢字]=>ひらがな
- [漢字]=>ひらがな (不一致版)
- [漢字]=>カタカナ
- [漢字]=>漢字
- [漢字]=>ローマ字
- キーが[ローマ字]
- [ローマ字]=>ひらがな
- [ローマ字]=>カタカナ
- [ローマ字]=>漢字(★)
- 3次元配列(よく使うもののみ)
- エリア漢字(ローマ字=>漢字)
- エリアローマ字(ローマ字=>漢字)
- 4次元配列(使わない。ネタ。)
※よく使うものには(★)マーク
1次元配列(普通の配列)
ひらがな
//「都府県」アリ $list = array('ほっかいどう','あおもりけん','いわてけん','みやぎけん','あきたけん','やまがたけん','ふくしまけん','いばらきけん','とちぎけん','ぐんまけん','さいたまけん','ちばけん','とうきょうと','かながわけん','にいがたけん','とやまけん','いしかわけん','ふくいけん','やまなしけん','ながのけん','ぎふけん','しずおかけん','あいちけん','みえけん','しがけん','きょうとふ','おおさかふ','ひょうごけん','ならけん','わかやまけん','とっとりけん','しまねけん','おかやまけん','ひろしまけん','やまぐちけん','とくしまけん','かがわけん','えひめけん','こうちけん','ふくおかけん','さがけん','ながさきけん','くまもとけん','おおいたけん','みやざきけん','かごしまけん','おきなわけん'); //「都府県」ナシ $list = array('ほっかいどう','あおもり','いわて','みやぎ','あきた','やまがた','ふくしま','いばらき','とちぎ','ぐんま','さいたま','ちば','とうきょう','かながわ','にいがた','とやま','いしかわ','ふくい','やまなし','ながの','ぎふ','しずおか','あいち','みえ','しが','きょうと','おおさか','ひょうご','なら','わかやま','とっとり','しまね','おかやま','ひろしま','やまぐち','とくしま','かがわ','えひめ','こうち','ふくおか','さが','ながさき','くまもと','おおいた','みやざき','かごしま','おきなわ');カタカナ
//「都府県」ナシ $list = array('ホッカイドウ','アオモリ','イワテ','ミヤギ','アキタ','ヤマガタ','フクシマ','イバラキ','トチギ','グンマ','サイタマ','チバ','トウキョウ','カナガワ','ニイガタ','ヤマナシ','ナガノ','トヤマ','イシカワ','フクイ','ギフ','シズオカ','アイチ','ミエ','シガ','キョウト','オオサカ','ヒョウゴ','ナラ','ワカヤマ','トットリ','シマネ','オカヤマ','ヒロシマ','ヤマグチ','トクシマ','カガワ','エヒメ','コウチ','フクオカ','サガ','ナガサキ','クマモト','オオイタ','ミヤザキ','カゴシマ','オキナワ');漢字(★よく使う)
//「都府県」アリ $list = array('北海道','青森県','岩手県','宮城県','秋田県','山形県','福島県','茨城県','栃木県','群馬県','埼玉県','千葉県','東京都','神奈川県','新潟県','富山県','石川県','福井県','山梨県','長野県','岐阜県','静岡県','愛知県','三重県','滋賀県','京都府','大阪府','兵庫県','奈良県','和歌山県','鳥取県','島根県','岡山県','広島県','山口県','徳島県','香川県','愛媛県','高知県','福岡県','佐賀県','長崎県','熊本県','大分県','宮崎県','鹿児島県','沖縄県'); //「都府県」ナシ $list = array('北海道','青森','岩手','宮城','秋田','山形','福島','茨城','栃木','群馬','埼玉','千葉','東京','神奈川','新潟','富山','石川','福井','山梨','長野','岐阜','静岡','愛知','三重','滋賀','京都','大阪','兵庫','奈良','和歌山','鳥取','島根','岡山','広島','山口','徳島','香川','愛媛','高知','福岡','佐賀','長崎','熊本','大分','宮崎','鹿児島','沖縄');ローマ字(ヘボン式)(★よく使う)
//「都府県」ナシ $list = array('hokkaido','aomori','iwate','miyagi','akita','yamagata','fukushima','ibaraki','tochigi','gunma','saitama','chiba','tokyo','kanagawa','niigata','yamanashi','nagano','toyama','ishikawa','fukui','gifu','shizuoka','aichi','mie','shiga','kyoto','osaka','hyogo','nara','wakayama','tottori','shimane','oakayama','hiroshima','yamaguchi','tokushima','kagawa','ehime','kochi','fukuoka','saga','nagasaki','kumamoto','oita','miyazaki','kagoshima','okinawa');2次元配列(連想配列)
▼キーが[数字]
・[数字]=>ひらがな
//「都府県」アリ $list = array('1'=>'ほっかいどう','2'=>'あおもりけん','3'=>'いわてけん','4'=>'みやぎけん','5'=>'あきたけん','6'=>'やまがたけん','7'=>'ふくしまけん','8'=>'いばらきけん','9'=>'とちぎけん','10'=>'ぐんまけん','11'=>'さいたまけん','12'=>'ちばけん','13'=>'とうきょうと','14'=>'かながわけん','15'=>'にいがたけん','16'=>'とやまけん','17'=>'いしかわけん','18'=>'ふくいけん','19'=>'やまなしけん','20'=>'ながのけん','21'=>'ぎふけん','22'=>'しずおかけん','23'=>'あいちけん','24'=>'みえけん','25'=>'しがけん','26'=>'きょうとふ','27'=>'おおさかふ','28'=>'ひょうごけん','29'=>'ならけん','30'=>'わかやまけん','31'=>'とっとりけん','32'=>'しまねけん','33'=>'おかやまけん','34'=>'ひろしまけん','35'=>'やまぐちけん','36'=>'とくしまけん','37'=>'かがわけん','38'=>'えひめけん','39'=>'こうちけん','40'=>'ふくおかけん','41'=>'さがけん','42'=>'ながさきけん','43'=>'くまもとけん','44'=>'おおいたけん','45'=>'みやざきけん','46'=>'かごしまけん','47'=>'おきなわけん'); //「都府県」ナシ $list = array('1'=>'ほっかいどう','2'=>'あおもり','3'=>'いわて','4'=>'みやぎ','5'=>'あきた','6'=>'やまがた','7'=>'ふくしま','8'=>'いばらき','9'=>'とちぎ','10'=>'ぐんま','11'=>'さいたま','12'=>'ちば','13'=>'とうきょう','14'=>'かながわ','15'=>'にいがた','16'=>'とやま','17'=>'いしかわ','18'=>'ふくい','19'=>'やまなし','20'=>'ながの','21'=>'ぎふ','22'=>'しずおか','23'=>'あいち','24'=>'みえ','25'=>'しが','26'=>'きょうと','27'=>'おおさか','28'=>'ひょうご','29'=>'なら','30'=>'わかやま','31'=>'とっとり','32'=>'しまね','33'=>'おかやま','34'=>'ひろしま','35'=>'やまぐち','36'=>'とくしま','37'=>'かがわ','38'=>'えひめ','39'=>'こうち','40'=>'ふくおか','41'=>'さが','42'=>'ながさき','43'=>'くまもと','44'=>'おおいた','45'=>'みやざき','46'=>'かごしま','47'=>'おきなわ');・[数字]=>カタカナ
//「都府県」ナシ $list = array('1'=>'ホッカイドウ','2'=>'アオモリ','3'=>'イワテ','4'=>'ミヤギ','5'=>'アキタ','6'=>'ヤマガタ','7'=>'フクシマ','8'=>'イバラキ','9'=>'トチギ','10'=>'グンマ','11'=>'サイタマ','12'=>'チバ','13'=>'トウキョウ','14'=>'カナガワ','15'=>'ニイガタ','16'=>'ヤマナシ','17'=>'ナガノ','18'=>'トヤマ','19'=>'イシカワ','20'=>'フクイ','21'=>'ギフ','22'=>'シズオカ','23'=>'アイチ','24'=>'ミエ','25'=>'シガ','26'=>'キョウト','27'=>'オオサカ','28'=>'ヒョウゴ','29'=>'ナラ','30'=>'ワカヤマ','31'=>'トットリ','32'=>'シマネ','33'=>'オカヤマ','34'=>'ヒロシマ','35'=>'ヤマグチ','36'=>'トクシマ','37'=>'カガワ','38'=>'エヒメ','39'=>'コウチ','40'=>'フクオカ','41'=>'サガ','42'=>'ナガサキ','43'=>'クマモト','44'=>'オオイタ','45'=>'ミヤザキ','46'=>'カゴシマ','47'=>'オキナワ');・[数字]=>漢字(★よく使う)
//「都府県」アリ $list = array('1'=>'北海道','2'=>'青森県','3'=>'岩手県','4'=>'宮城県','5'=>'秋田県','6'=>'山形県','7'=>'福島県','8'=>'茨城県','9'=>'栃木県','10'=>'群馬県','11'=>'埼玉県','12'=>'千葉県','13'=>'東京都','14'=>'神奈川県','15'=>'新潟県','16'=>'富山県','17'=>'石川県','18'=>'福井県','19'=>'山梨県','20'=>'長野県','21'=>'岐阜県','22'=>'静岡県','23'=>'愛知県','24'=>'三重県','25'=>'滋賀県','26'=>'京都府','27'=>'大阪府','28'=>'兵庫県','29'=>'奈良県','30'=>'和歌山県','31'=>'鳥取県','32'=>'島根県','33'=>'岡山県','34'=>'広島県','35'=>'山口県','36'=>'徳島県','37'=>'香川県','38'=>'愛媛県','39'=>'高知県','40'=>'福岡県','41'=>'佐賀県','42'=>'長崎県','43'=>'熊本県','44'=>'大分県','45'=>'宮崎県','46'=>'鹿児島県','47'=>'沖縄県'); //「都府県」ナシ $list = array('1'=>'北海道','2'=>'青森','3'=>'岩手','4'=>'宮城','5'=>'秋田','6'=>'山形','7'=>'福島','8'=>'茨城','9'=>'栃木','10'=>'群馬','11'=>'埼玉','12'=>'千葉','13'=>'東京','14'=>'神奈川','15'=>'新潟','16'=>'富山','17'=>'石川','18'=>'福井','19'=>'山梨','20'=>'長野','21'=>'岐阜','22'=>'静岡','23'=>'愛知','24'=>'三重','25'=>'滋賀','26'=>'京都','27'=>'大阪','28'=>'兵庫','29'=>'奈良','30'=>'和歌山','31'=>'鳥取','32'=>'島根','33'=>'岡山','34'=>'広島','35'=>'山口','36'=>'徳島','37'=>'香川','38'=>'愛媛','39'=>'高知','40'=>'福岡','41'=>'佐賀','42'=>'長崎','43'=>'熊本','44'=>'大分','45'=>'宮崎','46'=>'鹿児島','47'=>'沖縄');・[数字]=>ローマ字(ヘボン式)(★よく使う)
//「都府県」ナシ $list = array('1'=>'hokkaido','2'=>'aomori','3'=>'iwate','4'=>'miyagi','5'=>'akita','6'=>'yamagata','7'=>'fukushima','8'=>'ibaraki','9'=>'tochigi','10'=>'gunma','11'=>'saitama','12'=>'chiba','13'=>'tokyo','14'=>'kanagawa','15'=>'niigata','16'=>'yamanashi','17'=>'nagano','18'=>'toyama','19'=>'ishikawa','20'=>'fukui','21'=>'gifu','22'=>'shizuoka','23'=>'aichi','24'=>'mie','25'=>'shiga','26'=>'kyoto','27'=>'osaka','28'=>'hyogo','29'=>'nara','30'=>'wakayama','31'=>'tottori','32'=>'shimane','33'=>'oakayama','34'=>'hiroshima','35'=>'yamaguchi','36'=>'tokushima','37'=>'kagawa','38'=>'ehime','39'=>'kochi','40'=>'fukuoka','41'=>'saga','42'=>'nagasaki','43'=>'kumamoto','44'=>'oita','45'=>'miyazaki','46'=>'kagoshima','47'=>'okinawa');▼キーが[ひらがな]
・[ひらがな]=>ひらがな
//「都府県」アリからナシ $list = array('ほっかいどう'=>'ほっかいどう','あおもりけん'=>'あおもり','いわてけん'=>'いわて','みやぎけん'=>'みやぎ','あきたけん'=>'あきた','やまがたけん'=>'やまがた','ふくしまけん'=>'ふくしま','いばらきけん'=>'いばらき','とちぎけん'=>'とちぎ','ぐんまけん'=>'ぐんま','さいたまけん'=>'さいたま','ちばけん'=>'ちば','とうきょうと'=>'とうきょう','かながわけん'=>'かながわ','にいがたけん'=>'にいがた','とやまけん'=>'とやま','いしかわけん'=>'いしかわ','ふくいけん'=>'ふくい','やまなしけん'=>'やまなし','ながのけん'=>'ながの','ぎふけん'=>'ぎふ','しずおかけん'=>'しずおか','あいちけん'=>'あいち','みえけん'=>'みえ','しがけん'=>'しが','きょうとふ'=>'きょうと','おおさかふ'=>'おおさか','ひょうごけん'=>'ひょうご','ならけん'=>'なら','わかやまけん'=>'わかやま','とっとりけん'=>'とっとり','しまねけん'=>'しまね','おかやまけん'=>'おかやま','ひろしまけん'=>'ひろしま','やまぐちけん'=>'やまぐち','とくしまけん'=>'とくしま','かがわけん'=>'かがわ','えひめけん'=>'えひめ','こうちけん'=>'こうち','ふくおかけん'=>'ふくおか','さがけん'=>'さが','ながさきけん'=>'ながさき','くまもとけん'=>'くまもと','おおいたけん'=>'おおいた','みやざきけん'=>'みやざき','かごしまけん'=>'かごしま','おきなわけん'=>'おきなわ'); //「都府県」ナシからアリ $list = array('ほっかいどう'=>'ほっかいどう','あおもり'=>'あおもりけん','いわて'=>'いわてけん','みやぎ'=>'みやぎけん','あきた'=>'あきたけん','やまがた'=>'やまがたけん','ふくしま'=>'ふくしまけん','いばらき'=>'いばらきけん','とちぎ'=>'とちぎけん','ぐんま'=>'ぐんまけん','さいたま'=>'さいたまけん','ちば'=>'ちばけん','とうきょう'=>'とうきょうと','かながわ'=>'かながわけん','にいがた'=>'にいがたけん','とやま'=>'とやまけん','いしかわ'=>'いしかわけん','ふくい'=>'ふくいけん','やまなし'=>'やまなしけん','ながの'=>'ながのけん','ぎふ'=>'ぎふけん','しずおか'=>'しずおかけん','あいち'=>'あいちけん','みえ'=>'みえけん','しが'=>'しがけん','きょうと'=>'きょうとふ','おおさか'=>'おおさかふ','ひょうご'=>'ひょうごけん','なら'=>'ならけん','わかやま'=>'わかやまけん','とっとり'=>'とっとりけん','しまね'=>'しまねけん','おかやま'=>'おかやまけん','ひろしま'=>'ひろしまけん','やまぐち'=>'やまぐちけん','とくしま'=>'とくしまけん','かがわ'=>'かがわけん','えひめ'=>'えひめけん','こうち'=>'こうちけん','ふくおか'=>'ふくおかけん','さが'=>'さがけん','ながさき'=>'ながさきけん','くまもと'=>'くまもとけん','おおいた'=>'おおいたけん','みやざき'=>'みやざきけん','かごしま'=>'かごしまけん','おきなわ'=>'おきなわけん');・[ひらがな]=>カタカナ
//「都府県」アリ(ひらがなのみ) $list = array('ほっかいどう'=>'ホッカイドウ','あおもりけん'=>'アオモリ','いわてけん'=>'イワテ','みやぎけん'=>'ミヤギ','あきたけん'=>'アキタ','やまがたけん'=>'ヤマガタ','ふくしまけん'=>'フクシマ','いばらきけん'=>'イバラキ','とちぎけん'=>'トチギ','ぐんまけん'=>'グンマ','さいたまけん'=>'サイタマ','ちばけん'=>'チバ','とうきょうと'=>'トウキョウ','かながわけん'=>'カナガワ','にいがたけん'=>'ニイガタ','とやまけん'=>'ヤマナシ','いしかわけん'=>'ナガノ','ふくいけん'=>'トヤマ','やまなしけん'=>'イシカワ','ながのけん'=>'フクイ','ぎふけん'=>'ギフ','しずおかけん'=>'シズオカ','あいちけん'=>'アイチ','みえけん'=>'ミエ','しがけん'=>'シガ','きょうとふ'=>'キョウト','おおさかふ'=>'オオサカ','ひょうごけん'=>'ヒョウゴ','ならけん'=>'ナラ','わかやまけん'=>'ワカヤマ','とっとりけん'=>'トットリ','しまねけん'=>'シマネ','おかやまけん'=>'オカヤマ','ひろしまけん'=>'ヒロシマ','やまぐちけん'=>'ヤマグチ','とくしまけん'=>'トクシマ','かがわけん'=>'カガワ','えひめけん'=>'エヒメ','こうちけん'=>'コウチ','ふくおかけん'=>'フクオカ','さがけん'=>'サガ','ながさきけん'=>'ナガサキ','くまもとけん'=>'クマモト','おおいたけん'=>'オオイタ','みやざきけん'=>'ミヤザキ','かごしまけん'=>'カゴシマ','おきなわけん'=>'オキナワ'); //「都府県」ナシ $list = array('ほっかいどう'=>'ホッカイドウ','あおもり'=>'アオモリ','いわて'=>'イワテ','みやぎ'=>'ミヤギ','あきた'=>'アキタ','やまがた'=>'ヤマガタ','ふくしま'=>'フクシマ','いばらき'=>'イバラキ','とちぎ'=>'トチギ','ぐんま'=>'グンマ','さいたま'=>'サイタマ','ちば'=>'チバ','とうきょう'=>'トウキョウ','かながわ'=>'カナガワ','にいがた'=>'ニイガタ','とやま'=>'ヤマナシ','いしかわ'=>'ナガノ','ふくい'=>'トヤマ','やまなし'=>'イシカワ','ながの'=>'フクイ','ぎふ'=>'ギフ','しずおか'=>'シズオカ','あいち'=>'アイチ','みえ'=>'ミエ','しが'=>'シガ','きょうと'=>'キョウト','おおさか'=>'オオサカ','ひょうご'=>'ヒョウゴ','なら'=>'ナラ','わかやま'=>'ワカヤマ','とっとり'=>'トットリ','しまね'=>'シマネ','おかやま'=>'オカヤマ','ひろしま'=>'ヒロシマ','やまぐち'=>'ヤマグチ','とくしま'=>'トクシマ','かがわ'=>'カガワ','えひめ'=>'エヒメ','こうち'=>'コウチ','ふくおか'=>'フクオカ','さが'=>'サガ','ながさき'=>'ナガサキ','くまもと'=>'クマモト','おおいた'=>'オオイタ','みやざき'=>'ミヤザキ','かごしま'=>'カゴシマ','おきなわ'=>'オキナワ');・[ひらがな]=>漢字
//「都府県」アリ $list = array('ほっかいどう'=>'北海道','あおもりけん'=>'青森県','いわてけん'=>'岩手県','みやぎけん'=>'宮城県','あきたけん'=>'秋田県','やまがたけん'=>'山形県','ふくしまけん'=>'福島県','いばらきけん'=>'茨城県','とちぎけん'=>'栃木県','ぐんまけん'=>'群馬県','さいたまけん'=>'埼玉県','ちばけん'=>'千葉県','とうきょうと'=>'東京都','かながわけん'=>'神奈川県','にいがたけん'=>'新潟県','とやまけん'=>'富山県','いしかわけん'=>'石川県','ふくいけん'=>'福井県','やまなしけん'=>'山梨県','ながのけん'=>'長野県','ぎふけん'=>'岐阜県','しずおかけん'=>'静岡県','あいちけん'=>'愛知県','みえけん'=>'三重県','しがけん'=>'滋賀県','きょうとふ'=>'京都府','おおさかふ'=>'大阪府','ひょうごけん'=>'兵庫県','ならけん'=>'奈良県','わかやまけん'=>'和歌山県','とっとりけん'=>'鳥取県','しまねけん'=>'島根県','おかやまけん'=>'岡山県','ひろしまけん'=>'広島県','やまぐちけん'=>'山口県','とくしまけん'=>'徳島県','かがわけん'=>'香川県','えひめけん'=>'愛媛県','こうちけん'=>'高知県','ふくおかけん'=>'福岡県','さがけん'=>'佐賀県','ながさきけん'=>'長崎県','くまもとけん'=>'熊本県','おおいたけん'=>'大分県','みやざきけん'=>'宮崎県','かごしまけん'=>'鹿児島県','おきなわけん'=>'沖縄県'); //「都府県」ナシ $list = array('ほっかいどう'=>'北海道','あおもり'=>'青森','いわて'=>'岩手','みやぎ'=>'宮城','あきた'=>'秋田','やまがた'=>'山形','ふくしま'=>'福島','いばらき'=>'茨城','とちぎ'=>'栃木','ぐんま'=>'群馬','さいたま'=>'埼玉','ちば'=>'千葉','とうきょう'=>'東京','かながわ'=>'神奈川','にいがた'=>'新潟','とやま'=>'富山','いしかわ'=>'石川','ふくい'=>'福井','やまなし'=>'山梨','ながの'=>'長野','ぎふ'=>'岐阜','しずおか'=>'静岡','あいち'=>'愛知','みえ'=>'三重','しが'=>'滋賀','きょうと'=>'京都','おおさか'=>'大阪','ひょうご'=>'兵庫','なら'=>'奈良','わかやま'=>'和歌山','とっとり'=>'鳥取','しまね'=>'島根','おかやま'=>'岡山','ひろしま'=>'広島','やまぐち'=>'山口','とくしま'=>'徳島','かがわ'=>'香川','えひめ'=>'愛媛','こうち'=>'高知','ふくおか'=>'福岡','さが'=>'佐賀','ながさき'=>'長崎','くまもと'=>'熊本','おおいた'=>'大分','みやざき'=>'宮崎','かごしま'=>'鹿児島','おきなわ'=>'沖縄');・[ひらがな]=>漢字 (不一致版)
//「都府県」(アリ→ナシ) $list = array('ほっかいどう'=>'北海道','あおもりけん'=>'青森','いわてけん'=>'岩手','みやぎけん'=>'宮城','あきたけん'=>'秋田','やまがたけん'=>'山形','ふくしまけん'=>'福島','いばらきけん'=>'茨城','とちぎけん'=>'栃木','ぐんまけん'=>'群馬','さいたまけん'=>'埼玉','ちばけん'=>'千葉','とうきょうと'=>'東京','かながわけん'=>'神奈川','にいがたけん'=>'新潟','とやまけん'=>'富山','いしかわけん'=>'石川','ふくいけん'=>'福井','やまなしけん'=>'山梨','ながのけん'=>'長野','ぎふけん'=>'岐阜','しずおかけん'=>'静岡','あいちけん'=>'愛知','みえけん'=>'三重','しがけん'=>'滋賀','きょうとふ'=>'京都','おおさかふ'=>'大阪','ひょうごけん'=>'兵庫','ならけん'=>'奈良','わかやまけん'=>'和歌山','とっとりけん'=>'鳥取','しまねけん'=>'島根','おかやまけん'=>'岡山','ひろしまけん'=>'広島','やまぐちけん'=>'山口','とくしまけん'=>'徳島','かがわけん'=>'香川','えひめけん'=>'愛媛','こうちけん'=>'高知','ふくおかけん'=>'福岡','さがけん'=>'佐賀','ながさきけん'=>'長崎','くまもとけん'=>'熊本','おおいたけん'=>'大分','みやざきけん'=>'宮崎','かごしまけん'=>'鹿児島','おきなわけん'=>'沖縄'); //「都府県」(ナシ→アリ) $list = array('ほっかいどう'=>'北海道','あおもり'=>'青森県','いわて'=>'岩手県','みやぎ'=>'宮城県','あきた'=>'秋田県','やまがた'=>'山形県','ふくしま'=>'福島県','いばらき'=>'茨城県','とちぎ'=>'栃木県','ぐんま'=>'群馬県','さいたま'=>'埼玉県','ちば'=>'千葉県','とうきょう'=>'東京都','かながわ'=>'神奈川県','にいがた'=>'新潟県','とやま'=>'富山県','いしかわ'=>'石川県','ふくい'=>'福井県','やまなし'=>'山梨県','ながの'=>'長野県','ぎふ'=>'岐阜県','しずおか'=>'静岡県','あいち'=>'愛知県','みえ'=>'三重県','しが'=>'滋賀県','きょうと'=>'京都府','おおさか'=>'大阪府','ひょうご'=>'兵庫県','なら'=>'奈良県','わかやま'=>'和歌山県','とっとり'=>'鳥取県','しまね'=>'島根県','おかやま'=>'岡山県','ひろしま'=>'広島県','やまぐち'=>'山口県','とくしま'=>'徳島県','かがわ'=>'香川県','えひめ'=>'愛媛県','こうち'=>'高知県','ふくおか'=>'福岡県','さが'=>'佐賀県','ながさき'=>'長崎県','くまもと'=>'熊本県','おおいた'=>'大分県','みやざき'=>'宮崎県','かごしま'=>'鹿児島県','おきなわ'=>'沖縄県');・[ひらがな]=>ローマ字
//「都府県」アリ(ひらがなのみ) $list = array('ほっかいどう'=>'hokkaido','あおもりけん'=>'aomori','いわてけん'=>'iwate','みやぎけん'=>'miyagi','あきたけん'=>'akita','やまがたけん'=>'yamagata','ふくしまけん'=>'fukushima','いばらきけん'=>'ibaraki','とちぎけん'=>'tochigi','ぐんまけん'=>'gunma','さいたまけん'=>'saitama','ちばけん'=>'chiba','とうきょうと'=>'tokyo','かながわけん'=>'kanagawa','にいがたけん'=>'niigata','とやまけん'=>'yamanashi','いしかわけん'=>'nagano','ふくいけん'=>'toyama','やまなしけん'=>'ishikawa','ながのけん'=>'fukui','ぎふけん'=>'gifu','しずおかけん'=>'shizuoka','あいちけん'=>'aichi','みえけん'=>'mie','しがけん'=>'shiga','きょうとふ'=>'kyoto','おおさかふ'=>'osaka','ひょうごけん'=>'hyogo','ならけん'=>'nara','わかやまけん'=>'wakayama','とっとりけん'=>'tottori','しまねけん'=>'shimane','おかやまけん'=>'oakayama','ひろしまけん'=>'hiroshima','やまぐちけん'=>'yamaguchi','とくしまけん'=>'tokushima','かがわけん'=>'kagawa','えひめけん'=>'ehime','こうちけん'=>'kochi','ふくおかけん'=>'fukuoka','さがけん'=>'saga','ながさきけん'=>'nagasaki','くまもとけん'=>'kumamoto','おおいたけん'=>'oita','みやざきけん'=>'miyazaki','かごしまけん'=>'kagoshima','おきなわけん'=>'okinawa'); //「都府県」ナシ $list = array('ほっかいどう'=>'hokkaido','あおもり'=>'aomori','いわて'=>'iwate','みやぎ'=>'miyagi','あきた'=>'akita','やまがた'=>'yamagata','ふくしま'=>'fukushima','いばらき'=>'ibaraki','とちぎ'=>'tochigi','ぐんま'=>'gunma','さいたま'=>'saitama','ちば'=>'chiba','とうきょう'=>'tokyo','かながわ'=>'kanagawa','にいがた'=>'niigata','とやま'=>'yamanashi','いしかわ'=>'nagano','ふくい'=>'toyama','やまなし'=>'ishikawa','ながの'=>'fukui','ぎふ'=>'gifu','しずおか'=>'shizuoka','あいち'=>'aichi','みえ'=>'mie','しが'=>'shiga','きょうと'=>'kyoto','おおさか'=>'osaka','ひょうご'=>'hyogo','なら'=>'nara','わかやま'=>'wakayama','とっとり'=>'tottori','しまね'=>'shimane','おかやま'=>'oakayama','ひろしま'=>'hiroshima','やまぐち'=>'yamaguchi','とくしま'=>'tokushima','かがわ'=>'kagawa','えひめ'=>'ehime','こうち'=>'kochi','ふくおか'=>'fukuoka','さが'=>'saga','ながさき'=>'nagasaki','くまもと'=>'kumamoto','おおいた'=>'oita','みやざき'=>'miyazaki','かごしま'=>'kagoshima','おきなわ'=>'okinawa');▼キーが[カタカナ]
・[カタカナ]=>ひらがな
//「都府県」ナシ $list = array('ホッカイドウ'=>'ほっかいどう','アオモリ'=>'あおもりけん','イワテ'=>'いわてけん','ミヤギ'=>'みやぎけん','アキタ'=>'あきたけん','ヤマガタ'=>'やまがたけん','フクシマ'=>'ふくしまけん','イバラキ'=>'いばらきけん','トチギ'=>'とちぎけん','グンマ'=>'ぐんまけん','サイタマ'=>'さいたまけん','チバ'=>'ちばけん','トウキョウ'=>'とうきょうと','カナガワ'=>'かながわけん','ニイガタ'=>'にいがたけん','ヤマナシ'=>'とやまけん','ナガノ'=>'いしかわけん','トヤマ'=>'ふくいけん','イシカワ'=>'やまなしけん','フクイ'=>'ながのけん','ギフ'=>'ぎふけん','シズオカ'=>'しずおかけん','アイチ'=>'あいちけん','ミエ'=>'みえけん','シガ'=>'しがけん','キョウト'=>'きょうとふ','オオサカ'=>'おおさかふ','ヒョウゴ'=>'ひょうごけん','ナラ'=>'ならけん','ワカヤマ'=>'わかやまけん','トットリ'=>'とっとりけん','シマネ'=>'しまねけん','オカヤマ'=>'おかやまけん','ヒロシマ'=>'ひろしまけん','ヤマグチ'=>'やまぐちけん','トクシマ'=>'とくしまけん','カガワ'=>'かがわけん','エヒメ'=>'えひめけん','コウチ'=>'こうちけん','フクオカ'=>'ふくおかけん','サガ'=>'さがけん','ナガサキ'=>'ながさきけん','クマモト'=>'くまもとけん','オオイタ'=>'おおいたけん','ミヤザキ'=>'みやざきけん','カゴシマ'=>'かごしまけん','オキナワ'=>'おきなわけん'); //「都府県」ナシからアリ $list = array('ホッカイドウ'=>'ほっかいどう','アオモリ'=>'あおもり','イワテ'=>'いわて','ミヤギ'=>'みやぎ','アキタ'=>'あきた','ヤマガタ'=>'やまがた','フクシマ'=>'ふくしま','イバラキ'=>'いばらき','トチギ'=>'とちぎ','グンマ'=>'ぐんま','サイタマ'=>'さいたま','チバ'=>'ちば','トウキョウ'=>'とうきょう','カナガワ'=>'かながわ','ニイガタ'=>'にいがた','ヤマナシ'=>'とやま','ナガノ'=>'いしかわ','トヤマ'=>'ふくい','イシカワ'=>'やまなし','フクイ'=>'ながの','ギフ'=>'ぎふ','シズオカ'=>'しずおか','アイチ'=>'あいち','ミエ'=>'みえ','シガ'=>'しが','キョウト'=>'きょうと','オオサカ'=>'おおさか','ヒョウゴ'=>'ひょうご','ナラ'=>'なら','ワカヤマ'=>'わかやま','トットリ'=>'とっとり','シマネ'=>'しまね','オカヤマ'=>'おかやま','ヒロシマ'=>'ひろしま','ヤマグチ'=>'やまぐち','トクシマ'=>'とくしま','カガワ'=>'かがわ','エヒメ'=>'えひめ','コウチ'=>'こうち','フクオカ'=>'ふくおか','サガ'=>'さが','ナガサキ'=>'ながさき','クマモト'=>'くまもと','オオイタ'=>'おおいた','ミヤザキ'=>'みやざき','カゴシマ'=>'かごしま','オキナワ'=>'おきなわ');・[カタカナ]=>漢字
//「都府県」ナシ $list = array('ホッカイドウ'=>'北海道','アオモリ'=>'青森','イワテ'=>'岩手','ミヤギ'=>'宮城','アキタ'=>'秋田','ヤマガタ'=>'山形','フクシマ'=>'福島','イバラキ'=>'茨城','トチギ'=>'栃木','グンマ'=>'群馬','サイタマ'=>'埼玉','チバ'=>'千葉','トウキョウ'=>'東京','カナガワ'=>'神奈川','ニイガタ'=>'新潟','ヤマナシ'=>'富山','ナガノ'=>'石川','トヤマ'=>'福井','イシカワ'=>'山梨','フクイ'=>'長野','ギフ'=>'岐阜','シズオカ'=>'静岡','アイチ'=>'愛知','ミエ'=>'三重','シガ'=>'滋賀','キョウト'=>'京都','オオサカ'=>'大阪','ヒョウゴ'=>'兵庫','ナラ'=>'奈良','ワカヤマ'=>'和歌山','トットリ'=>'鳥取','シマネ'=>'島根','オカヤマ'=>'岡山','ヒロシマ'=>'広島','ヤマグチ'=>'山口','トクシマ'=>'徳島','カガワ'=>'香川','エヒメ'=>'愛媛','コウチ'=>'高知','フクオカ'=>'福岡','サガ'=>'佐賀','ナガサキ'=>'長崎','クマモト'=>'熊本','オオイタ'=>'大分','ミヤザキ'=>'宮崎','カゴシマ'=>'鹿児島','オキナワ'=>'沖縄'); //「都府県」ナシからアリ $list = array('ホッカイドウ'=>'北海道','アオモリ'=>'青森県','イワテ'=>'岩手県','ミヤギ'=>'宮城県','アキタ'=>'秋田県','ヤマガタ'=>'山形県','フクシマ'=>'福島県','イバラキ'=>'茨城県','トチギ'=>'栃木県','グンマ'=>'群馬県','サイタマ'=>'埼玉県','チバ'=>'千葉県','トウキョウ'=>'東京都','カナガワ'=>'神奈川県','ニイガタ'=>'新潟県','ヤマナシ'=>'富山県','ナガノ'=>'石川県','トヤマ'=>'福井県','イシカワ'=>'山梨県','フクイ'=>'長野県','ギフ'=>'岐阜県','シズオカ'=>'静岡県','アイチ'=>'愛知県','ミエ'=>'三重県','シガ'=>'滋賀県','キョウト'=>'京都府','オオサカ'=>'大阪府','ヒョウゴ'=>'兵庫県','ナラ'=>'奈良県','ワカヤマ'=>'和歌山県','トットリ'=>'鳥取県','シマネ'=>'島根県','オカヤマ'=>'岡山県','ヒロシマ'=>'広島県','ヤマグチ'=>'山口県','トクシマ'=>'徳島県','カガワ'=>'香川県','エヒメ'=>'愛媛県','コウチ'=>'高知県','フクオカ'=>'福岡県','サガ'=>'佐賀県','ナガサキ'=>'長崎県','クマモト'=>'熊本県','オオイタ'=>'大分県','ミヤザキ'=>'宮崎県','カゴシマ'=>'鹿児島県','オキナワ'=>'沖縄県');・[カタカナ]=>ローマ字
//「都府県」ナシ $list = array('ホッカイドウ'=>'hokkaido','アオモリ'=>'aomori','イワテ'=>'iwate','ミヤギ'=>'miyagi','アキタ'=>'akita','ヤマガタ'=>'yamagata','フクシマ'=>'fukushima','イバラキ'=>'ibaraki','トチギ'=>'tochigi','グンマ'=>'gunma','サイタマ'=>'saitama','チバ'=>'chiba','トウキョウ'=>'tokyo','カナガワ'=>'kanagawa','ニイガタ'=>'niigata','ヤマナシ'=>'yamanashi','ナガノ'=>'nagano','トヤマ'=>'toyama','イシカワ'=>'ishikawa','フクイ'=>'fukui','ギフ'=>'gifu','シズオカ'=>'shizuoka','アイチ'=>'aichi','ミエ'=>'mie','シガ'=>'shiga','キョウト'=>'kyoto','オオサカ'=>'osaka','ヒョウゴ'=>'hyogo','ナラ'=>'nara','ワカヤマ'=>'wakayama','トットリ'=>'tottori','シマネ'=>'shimane','オカヤマ'=>'oakayama','ヒロシマ'=>'hiroshima','ヤマグチ'=>'yamaguchi','トクシマ'=>'tokushima','カガワ'=>'kagawa','エヒメ'=>'ehime','コウチ'=>'kochi','フクオカ'=>'fukuoka','サガ'=>'saga','ナガサキ'=>'nagasaki','クマモト'=>'kumamoto','オオイタ'=>'oita','ミヤザキ'=>'miyazaki','カゴシマ'=>'kagoshima','オキナワ'=>'okinawa');▼キーが[漢字]
・[漢字]=>ひらがな
//「都府県」アリ $list = array('北海道'=>'ほっかいどう','青森県'=>'あおもりけん','岩手県'=>'いわてけん','宮城県'=>'みやぎけん','秋田県'=>'あきたけん','山形県'=>'やまがたけん','福島県'=>'ふくしまけん','茨城県'=>'いばらきけん','栃木県'=>'とちぎけん','群馬県'=>'ぐんまけん','埼玉県'=>'さいたまけん','千葉県'=>'ちばけん','東京都'=>'とうきょうと','神奈川県'=>'かながわけん','新潟県'=>'にいがたけん','富山県'=>'とやまけん','石川県'=>'いしかわけん','福井県'=>'ふくいけん','山梨県'=>'やまなしけん','長野県'=>'ながのけん','岐阜県'=>'ぎふけん','静岡県'=>'しずおかけん','愛知県'=>'あいちけん','三重県'=>'みえけん','滋賀県'=>'しがけん','京都府'=>'きょうとふ','大阪府'=>'おおさかふ','兵庫県'=>'ひょうごけん','奈良県'=>'ならけん','和歌山県'=>'わかやまけん','鳥取県'=>'とっとりけん','島根県'=>'しまねけん','岡山県'=>'おかやまけん','広島県'=>'ひろしまけん','山口県'=>'やまぐちけん','徳島県'=>'とくしまけん','香川県'=>'かがわけん','愛媛県'=>'えひめけん','高知県'=>'こうちけん','福岡県'=>'ふくおかけん','佐賀県'=>'さがけん','長崎県'=>'ながさきけん','熊本県'=>'くまもとけん','大分県'=>'おおいたけん','宮崎県'=>'みやざきけん','鹿児島県'=>'かごしまけん','沖縄県'=>'おきなわけん'); //「都府県」ナシ $list = array('北海道'=>'ほっかいどう','青森'=>'あおもり','岩手'=>'いわて','宮城'=>'みやぎ','秋田'=>'あきた','山形'=>'やまがた','福島'=>'ふくしま','茨城'=>'いばらき','栃木'=>'とちぎ','群馬'=>'ぐんま','埼玉'=>'さいたま','千葉'=>'ちば','東京'=>'とうきょう','神奈川'=>'かながわ','新潟'=>'にいがた','富山'=>'とやま','石川'=>'いしかわ','福井'=>'ふくい','山梨'=>'やまなし','長野'=>'ながの','岐阜'=>'ぎふ','静岡'=>'しずおか','愛知'=>'あいち','三重'=>'みえ','滋賀'=>'しが','京都'=>'きょうと','大阪'=>'おおさか','兵庫'=>'ひょうご','奈良'=>'なら','和歌山'=>'わかやま','鳥取'=>'とっとり','島根'=>'しまね','岡山'=>'おかやま','広島'=>'ひろしま','山口'=>'やまぐち','徳島'=>'とくしま','香川'=>'かがわ','愛媛'=>'えひめ','高知'=>'こうち','福岡'=>'ふくおか','佐賀'=>'さが','長崎'=>'ながさき','熊本'=>'くまもと','大分'=>'おおいた','宮崎'=>'みやざき','鹿児島'=>'かごしま','沖縄'=>'おきなわ');・[漢字]=>ひらがな (不一致版)
//「都府県」(アリ→ナシ) $list = array('北海道'=>'ほっかいどう','青森県'=>'あおもり','岩手県'=>'いわて','宮城県'=>'みやぎ','秋田県'=>'あきた','山形県'=>'やまがた','福島県'=>'ふくしま','茨城県'=>'いばらき','栃木県'=>'とちぎ','群馬県'=>'ぐんま','埼玉県'=>'さいたま','千葉県'=>'ちば','東京都'=>'とうきょう','神奈川県'=>'かながわ','新潟県'=>'にいがた','富山県'=>'とやま','石川県'=>'いしかわ','福井県'=>'ふくい','山梨県'=>'やまなし','長野県'=>'ながの','岐阜県'=>'ぎふ','静岡県'=>'しずおか','愛知県'=>'あいち','三重県'=>'みえ','滋賀県'=>'しが','京都府'=>'きょうと','大阪府'=>'おおさか','兵庫県'=>'ひょうご','奈良県'=>'なら','和歌山県'=>'わかやま','鳥取県'=>'とっとり','島根県'=>'しまね','岡山県'=>'おかやま','広島県'=>'ひろしま','山口県'=>'やまぐち','徳島県'=>'とくしま','香川県'=>'かがわ','愛媛県'=>'えひめ','高知県'=>'こうち','福岡県'=>'ふくおか','佐賀県'=>'さが','長崎県'=>'ながさき','熊本県'=>'くまもと','大分県'=>'おおいた','宮崎県'=>'みやざき','鹿児島県'=>'かごしま','沖縄県'=>'おきなわ'); //「都府県」(ナシ→アリ) $list = array('北海道'=>'ほっかいどう','青森'=>'あおもりけん','岩手'=>'いわてけん','宮城'=>'みやぎけん','秋田'=>'あきたけん','山形'=>'やまがたけん','福島'=>'ふくしまけん','茨城'=>'いばらきけん','栃木'=>'とちぎけん','群馬'=>'ぐんまけん','埼玉'=>'さいたまけん','千葉'=>'ちばけん','東京'=>'とうきょうと','神奈川'=>'かながわけん','新潟'=>'にいがたけん','富山'=>'とやまけん','石川'=>'いしかわけん','福井'=>'ふくいけん','山梨'=>'やまなしけん','長野'=>'ながのけん','岐阜'=>'ぎふけん','静岡'=>'しずおかけん','愛知'=>'あいちけん','三重'=>'みえけん','滋賀'=>'しがけん','京都'=>'きょうとふ','大阪'=>'おおさかふ','兵庫'=>'ひょうごけん','奈良'=>'ならけん','和歌山'=>'わかやまけん','鳥取'=>'とっとりけん','島根'=>'しまねけん','岡山'=>'おかやまけん','広島'=>'ひろしまけん','山口'=>'やまぐちけん','徳島'=>'とくしまけん','香川'=>'かがわけん','愛媛'=>'えひめけん','高知'=>'こうちけん','福岡'=>'ふくおかけん','佐賀'=>'さがけん','長崎'=>'ながさきけん','熊本'=>'くまもとけん','大分'=>'おおいたけん','宮崎'=>'みやざきけん','鹿児島'=>'かごしまけん','沖縄'=>'おきなわけん');・[漢字]=>カタカナ
//「都府県」アリ(漢字のみ) $list = array('北海道'=>'ホッカイドウ','青森県'=>'アオモリ','岩手県'=>'イワテ','宮城県'=>'ミヤギ','秋田県'=>'アキタ','山形県'=>'ヤマガタ','福島県'=>'フクシマ','茨城県'=>'イバラキ','栃木県'=>'トチギ','群馬県'=>'グンマ','埼玉県'=>'サイタマ','千葉県'=>'チバ','東京都'=>'トウキョウ','神奈川県'=>'カナガワ','新潟県'=>'ニイガタ','富山県'=>'ヤマナシ','石川県'=>'ナガノ','福井県'=>'トヤマ','山梨県'=>'イシカワ','長野県'=>'フクイ','岐阜県'=>'ギフ','静岡県'=>'シズオカ','愛知県'=>'アイチ','三重県'=>'ミエ','滋賀県'=>'シガ','京都府'=>'キョウト','大阪府'=>'オオサカ','兵庫県'=>'ヒョウゴ','奈良県'=>'ナラ','和歌山県'=>'ワカヤマ','鳥取県'=>'トットリ','島根県'=>'シマネ','岡山県'=>'オカヤマ','広島県'=>'ヒロシマ','山口県'=>'ヤマグチ','徳島県'=>'トクシマ','香川県'=>'カガワ','愛媛県'=>'エヒメ','高知県'=>'コウチ','福岡県'=>'フクオカ','佐賀県'=>'サガ','長崎県'=>'ナガサキ','熊本県'=>'クマモト','大分県'=>'オオイタ','宮崎県'=>'ミヤザキ','鹿児島県'=>'カゴシマ','沖縄県'=>'オキナワ'); //「都府県」ナシ $list = array('北海道'=>'ホッカイドウ','青森'=>'アオモリ','岩手'=>'イワテ','宮城'=>'ミヤギ','秋田'=>'アキタ','山形'=>'ヤマガタ','福島'=>'フクシマ','茨城'=>'イバラキ','栃木'=>'トチギ','群馬'=>'グンマ','埼玉'=>'サイタマ','千葉'=>'チバ','東京'=>'トウキョウ','神奈川'=>'カナガワ','新潟'=>'ニイガタ','富山'=>'ヤマナシ','石川'=>'ナガノ','福井'=>'トヤマ','山梨'=>'イシカワ','長野'=>'フクイ','岐阜'=>'ギフ','静岡'=>'シズオカ','愛知'=>'アイチ','三重'=>'ミエ','滋賀'=>'シガ','京都'=>'キョウト','大阪'=>'オオサカ','兵庫'=>'ヒョウゴ','奈良'=>'ナラ','和歌山'=>'ワカヤマ','鳥取'=>'トットリ','島根'=>'シマネ','岡山'=>'オカヤマ','広島'=>'ヒロシマ','山口'=>'ヤマグチ','徳島'=>'トクシマ','香川'=>'カガワ','愛媛'=>'エヒメ','高知'=>'コウチ','福岡'=>'フクオカ','佐賀'=>'サガ','長崎'=>'ナガサキ','熊本'=>'クマモト','大分'=>'オオイタ','宮崎'=>'ミヤザキ','鹿児島'=>'カゴシマ','沖縄'=>'オキナワ');・[漢字]=>漢字
//「都府県」アリからナシ $list = array('北海道'=>'北海道','青森県'=>'青森','岩手県'=>'岩手','宮城県'=>'宮城','秋田県'=>'秋田','山形県'=>'山形','福島県'=>'福島','茨城県'=>'茨城','栃木県'=>'栃木','群馬県'=>'群馬','埼玉県'=>'埼玉','千葉県'=>'千葉','東京都'=>'東京','神奈川県'=>'神奈川','新潟県'=>'新潟','富山県'=>'富山','石川県'=>'石川','福井県'=>'福井','山梨県'=>'山梨','長野県'=>'長野','岐阜県'=>'岐阜','静岡県'=>'静岡','愛知県'=>'愛知','三重県'=>'三重','滋賀県'=>'滋賀','京都府'=>'京都','大阪府'=>'大阪','兵庫県'=>'兵庫','奈良県'=>'奈良','和歌山県'=>'和歌山','鳥取県'=>'鳥取','島根県'=>'島根','岡山県'=>'岡山','広島県'=>'広島','山口県'=>'山口','徳島県'=>'徳島','香川県'=>'香川','愛媛県'=>'愛媛','高知県'=>'高知','福岡県'=>'福岡','佐賀県'=>'佐賀','長崎県'=>'長崎','熊本県'=>'熊本','大分県'=>'大分','宮崎県'=>'宮崎','鹿児島県'=>'鹿児島','沖縄県'=>'沖縄'); //「都府県」ナシからアリ $list = array('北海道'=>'北海道','青森'=>'青森県','岩手'=>'岩手県','宮城'=>'宮城県','秋田'=>'秋田県','山形'=>'山形県','福島'=>'福島県','茨城'=>'茨城県','栃木'=>'栃木県','群馬'=>'群馬県','埼玉'=>'埼玉県','千葉'=>'千葉県','東京'=>'東京都','神奈川'=>'神奈川県','新潟'=>'新潟県','富山'=>'富山県','石川'=>'石川県','福井'=>'福井県','山梨'=>'山梨県','長野'=>'長野県','岐阜'=>'岐阜県','静岡'=>'静岡県','愛知'=>'愛知県','三重'=>'三重県','滋賀'=>'滋賀県','京都'=>'京都府','大阪'=>'大阪府','兵庫'=>'兵庫県','奈良'=>'奈良県','和歌山'=>'和歌山県','鳥取'=>'鳥取県','島根'=>'島根県','岡山'=>'岡山県','広島'=>'広島県','山口'=>'山口県','徳島'=>'徳島県','香川'=>'香川県','愛媛'=>'愛媛県','高知'=>'高知県','福岡'=>'福岡県','佐賀'=>'佐賀県','長崎'=>'長崎県','熊本'=>'熊本県','大分'=>'大分県','宮崎'=>'宮崎県','鹿児島'=>'鹿児島県','沖縄'=>'沖縄県');・[漢字]=>ローマ字
//「都府県」アリ(漢字のみ) $list = array('北海道'=>'hokkaido','青森県'=>'aomori','岩手県'=>'iwate','宮城県'=>'miyagi','秋田県'=>'akita','山形県'=>'yamagata','福島県'=>'fukushima','茨城県'=>'ibaraki','栃木県'=>'tochigi','群馬県'=>'gunma','埼玉県'=>'saitama','千葉県'=>'chiba','東京都'=>'tokyo','神奈川県'=>'kanagawa','新潟県'=>'niigata','富山県'=>'yamanashi','石川県'=>'nagano','福井県'=>'toyama','山梨県'=>'ishikawa','長野県'=>'fukui','岐阜県'=>'gifu','静岡県'=>'shizuoka','愛知県'=>'aichi','三重県'=>'mie','滋賀県'=>'shiga','京都府'=>'kyoto','大阪府'=>'osaka','兵庫県'=>'hyogo','奈良県'=>'nara','和歌山県'=>'wakayama','鳥取県'=>'tottori','島根県'=>'shimane','岡山県'=>'oakayama','広島県'=>'hiroshima','山口県'=>'yamaguchi','徳島県'=>'tokushima','香川県'=>'kagawa','愛媛県'=>'ehime','高知県'=>'kochi','福岡県'=>'fukuoka','佐賀県'=>'saga','長崎県'=>'nagasaki','熊本県'=>'kumamoto','大分県'=>'oita','宮崎県'=>'miyazaki','鹿児島県'=>'kagoshima','沖縄県'=>'okinawa'); //「都府県」ナシ $list = array('北海道'=>'hokkaido','青森'=>'aomori','岩手'=>'iwate','宮城'=>'miyagi','秋田'=>'akita','山形'=>'yamagata','福島'=>'fukushima','茨城'=>'ibaraki','栃木'=>'tochigi','群馬'=>'gunma','埼玉'=>'saitama','千葉'=>'chiba','東京'=>'tokyo','神奈川'=>'kanagawa','新潟'=>'niigata','富山'=>'yamanashi','石川'=>'nagano','福井'=>'toyama','山梨'=>'ishikawa','長野'=>'fukui','岐阜'=>'gifu','静岡'=>'shizuoka','愛知'=>'aichi','三重'=>'mie','滋賀'=>'shiga','京都'=>'kyoto','大阪'=>'osaka','兵庫'=>'hyogo','奈良'=>'nara','和歌山'=>'wakayama','鳥取'=>'tottori','島根'=>'shimane','岡山'=>'oakayama','広島'=>'hiroshima','山口'=>'yamaguchi','徳島'=>'tokushima','香川'=>'kagawa','愛媛'=>'ehime','高知'=>'kochi','福岡'=>'fukuoka','佐賀'=>'saga','長崎'=>'nagasaki','熊本'=>'kumamoto','大分'=>'oita','宮崎'=>'miyazaki','鹿児島'=>'kagoshima','沖縄'=>'okinawa');▼キーが[ローマ字]
・[ローマ字]=>ひらがな
//「都府県」アリ(ひらがなのみ) $list = array('hokkaido'=>'ほっかいどう','aomori'=>'あおもりけん','iwate'=>'いわてけん','miyagi'=>'みやぎけん','akita'=>'あきたけん','yamagata'=>'やまがたけん','fukushima'=>'ふくしまけん','ibaraki'=>'いばらきけん','tochigi'=>'とちぎけん','gunma'=>'ぐんまけん','saitama'=>'さいたまけん','chiba'=>'ちばけん','tokyo'=>'とうきょうと','kanagawa'=>'かながわけん','niigata'=>'にいがたけん','yamanashi'=>'とやまけん','nagano'=>'いしかわけん','toyama'=>'ふくいけん','ishikawa'=>'やまなしけん','fukui'=>'ながのけん','gifu'=>'ぎふけん','shizuoka'=>'しずおかけん','aichi'=>'あいちけん','mie'=>'みえけん','shiga'=>'しがけん','kyoto'=>'きょうとふ','osaka'=>'おおさかふ','hyogo'=>'ひょうごけん','nara'=>'ならけん','wakayama'=>'わかやまけん','tottori'=>'とっとりけん','shimane'=>'しまねけん','oakayama'=>'おかやまけん','hiroshima'=>'ひろしまけん','yamaguchi'=>'やまぐちけん','tokushima'=>'とくしまけん','kagawa'=>'かがわけん','ehime'=>'えひめけん','kochi'=>'こうちけん','fukuoka'=>'ふくおかけん','saga'=>'さがけん','nagasaki'=>'ながさきけん','kumamoto'=>'くまもとけん','oita'=>'おおいたけん','miyazaki'=>'みやざきけん','kagoshima'=>'かごしまけん','okinawa'=>'おきなわけん'); //「都府県」ナシ $list = array('hokkaido'=>'ほっかいどう','aomori'=>'あおもり','iwate'=>'いわて','miyagi'=>'みやぎ','akita'=>'あきた','yamagata'=>'やまがた','fukushima'=>'ふくしま','ibaraki'=>'いばらき','tochigi'=>'とちぎ','gunma'=>'ぐんま','saitama'=>'さいたま','chiba'=>'ちば','tokyo'=>'とうきょう','kanagawa'=>'かながわ','niigata'=>'にいがた','yamanashi'=>'とやま','nagano'=>'いしかわ','toyama'=>'ふくい','ishikawa'=>'やまなし','fukui'=>'ながの','gifu'=>'ぎふ','shizuoka'=>'しずおか','aichi'=>'あいち','mie'=>'みえ','shiga'=>'しが','kyoto'=>'きょうと','osaka'=>'おおさか','hyogo'=>'ひょうご','nara'=>'なら','wakayama'=>'わかやま','tottori'=>'とっとり','shimane'=>'しまね','oakayama'=>'おかやま','hiroshima'=>'ひろしま','yamaguchi'=>'やまぐち','tokushima'=>'とくしま','kagawa'=>'かがわ','ehime'=>'えひめ','kochi'=>'こうち','fukuoka'=>'ふくおか','saga'=>'さが','nagasaki'=>'ながさき','kumamoto'=>'くまもと','oita'=>'おおいた','miyazaki'=>'みやざき','kagoshima'=>'かごしま','okinawa'=>'おきなわ');・[ローマ字]=>カタカナ
//「都府県」ナシ $list = array('hokkaido'=>'ホッカイドウ','aomori'=>'アオモリ','iwate'=>'イワテ','miyagi'=>'ミヤギ','akita'=>'アキタ','yamagata'=>'ヤマガタ','fukushima'=>'フクシマ','ibaraki'=>'イバラキ','tochigi'=>'トチギ','gunma'=>'グンマ','saitama'=>'サイタマ','chiba'=>'チバ','tokyo'=>'トウキョウ','kanagawa'=>'カナガワ','niigata'=>'ニイガタ','yamanashi'=>'ヤマナシ','nagano'=>'ナガノ','toyama'=>'トヤマ','ishikawa'=>'イシカワ','fukui'=>'フクイ','gifu'=>'ギフ','shizuoka'=>'シズオカ','aichi'=>'アイチ','mie'=>'ミエ','shiga'=>'シガ','kyoto'=>'キョウト','osaka'=>'オオサカ','hyogo'=>'ヒョウゴ','nara'=>'ナラ','wakayama'=>'ワカヤマ','tottori'=>'トットリ','shimane'=>'シマネ','oakayama'=>'オカヤマ','hiroshima'=>'ヒロシマ','yamaguchi'=>'ヤマグチ','tokushima'=>'トクシマ','kagawa'=>'カガワ','ehime'=>'エヒメ','kochi'=>'コウチ','fukuoka'=>'フクオカ','saga'=>'サガ','nagasaki'=>'ナガサキ','kumamoto'=>'クマモト','oita'=>'オオイタ','miyazaki'=>'ミヤザキ','kagoshima'=>'カゴシマ','okinawa'=>'オキナワ');・[ローマ字]=>漢字(★よく使う)
//「都府県」アリ(漢字のみ) $list = array('hokkaido'=>'北海道','aomori'=>'青森県','iwate'=>'岩手県','miyagi'=>'宮城県','akita'=>'秋田県','yamagata'=>'山形県','fukushima'=>'福島県','ibaraki'=>'茨城県','tochigi'=>'栃木県','gunma'=>'群馬県','saitama'=>'埼玉県','chiba'=>'千葉県','tokyo'=>'東京都','kanagawa'=>'神奈川県','niigata'=>'新潟県','yamanashi'=>'富山県','nagano'=>'石川県','toyama'=>'福井県','ishikawa'=>'山梨県','fukui'=>'長野県','gifu'=>'岐阜県','shizuoka'=>'静岡県','aichi'=>'愛知県','mie'=>'三重県','shiga'=>'滋賀県','kyoto'=>'京都府','osaka'=>'大阪府','hyogo'=>'兵庫県','nara'=>'奈良県','wakayama'=>'和歌山県','tottori'=>'鳥取県','shimane'=>'島根県','oakayama'=>'岡山県','hiroshima'=>'広島県','yamaguchi'=>'山口県','tokushima'=>'徳島県','kagawa'=>'香川県','ehime'=>'愛媛県','kochi'=>'高知県','fukuoka'=>'福岡県','saga'=>'佐賀県','nagasaki'=>'長崎県','kumamoto'=>'熊本県','oita'=>'大分県','miyazaki'=>'宮崎県','kagoshima'=>'鹿児島県','okinawa'=>'沖縄県'); //「都府県」ナシ $list = array('hokkaido'=>'北海道','aomori'=>'青森','iwate'=>'岩手','miyagi'=>'宮城','akita'=>'秋田','yamagata'=>'山形','fukushima'=>'福島','ibaraki'=>'茨城','tochigi'=>'栃木','gunma'=>'群馬','saitama'=>'埼玉','chiba'=>'千葉','tokyo'=>'東京','kanagawa'=>'神奈川','niigata'=>'新潟','yamanashi'=>'富山','nagano'=>'石川','toyama'=>'福井','ishikawa'=>'山梨','fukui'=>'長野','gifu'=>'岐阜','shizuoka'=>'静岡','aichi'=>'愛知','mie'=>'三重','shiga'=>'滋賀','kyoto'=>'京都','osaka'=>'大阪','hyogo'=>'兵庫','nara'=>'奈良','wakayama'=>'和歌山','tottori'=>'鳥取','shimane'=>'島根','oakayama'=>'岡山','hiroshima'=>'広島','yamaguchi'=>'山口','tokushima'=>'徳島','kagawa'=>'香川','ehime'=>'愛媛','kochi'=>'高知','fukuoka'=>'福岡','saga'=>'佐賀','nagasaki'=>'長崎','kumamoto'=>'熊本','oita'=>'大分','miyazaki'=>'宮崎','kagoshima'=>'鹿児島','okinawa'=>'沖縄');3次元配列(よく使うもののみ)
エリア漢字(ローマ字=>漢字)
//「都府県」アリ $list = array( '北海道' => array('hokkaido'=>'北海道'), '東北' => array('aomori'=>'青森県','iwate'=>'岩手県','miyagi'=>'宮城県','akita'=>'秋田県','yamagata'=>'山形県','fukushima'=>'福島県'), '関東' => array('ibaraki'=>'茨城県','tochigi'=>'栃木県','gunma'=>'群馬県','saitama'=>'埼玉県','chiba'=>'千葉県','tokyo'=>'東京都','kanagawa'=>'神奈川県'), '中部' => array('niigata'=>'新潟県','yamanashi'=>'富山県','nagano'=>'石川県','toyama'=>'福井県','ishikawa'=>'山梨県','fukui'=>'長野県','gifu'=>'岐阜県','shizuoka'=>'静岡県','aichi'=>'愛知県'), '近畿' => array('mie'=>'三重県','shiga'=>'滋賀県','kyoto'=>'京都府','osaka'=>'大阪府','hyogo'=>'兵庫県','nara'=>'奈良県','wakayama'=>'和歌山県'), '中国' => array('tottori'=>'鳥取県','shimane'=>'島根県','oakayama'=>'岡山県','hiroshima'=>'広島県','yamaguchi'=>'山口県'), '四国' => array('tokushima'=>'徳島県','kagawa'=>'香川県','ehime'=>'愛媛県','kochi'=>'高知県'), '九州沖縄' => array('fukuoka'=>'福岡県','saga'=>'佐賀県','nagasaki'=>'長崎県','kumamoto'=>'熊本県','oita'=>'大分県','miyazaki'=>'宮崎県','kagoshima'=>'鹿児島県','okinawa'=>'沖縄県') ); //「都府県」ナシ $list = array( '北海道' => array('hokkaido'=>'北海道'), '東北' => array('aomori'=>'青森','iwate'=>'岩手','miyagi'=>'宮城','akita'=>'秋田','yamagata'=>'山形','fukushima'=>'福島'), '関東' => array('ibaraki'=>'茨城','tochigi'=>'栃木','gunma'=>'群馬','saitama'=>'埼玉','chiba'=>'千葉','tokyo'=>'東京','kanagawa'=>'神奈川'), '中部' => array('niigata'=>'新潟','yamanashi'=>'富山','nagano'=>'石川','toyama'=>'福井','ishikawa'=>'山梨','fukui'=>'長野','gifu'=>'岐阜','shizuoka'=>'静岡','aichi'=>'愛知'), '近畿' => array('mie'=>'三重','shiga'=>'滋賀','kyoto'=>'京都','osaka'=>'大阪','hyogo'=>'兵庫','nara'=>'奈良','wakayama'=>'和歌山'), '中国' => array('tottori'=>'鳥取','shimane'=>'島根','oakayama'=>'岡山','hiroshima'=>'広島','yamaguchi'=>'山口'), '四国' => array('tokushima'=>'徳島','kagawa'=>'香川','ehime'=>'愛媛','kochi'=>'高知'), '九州沖縄' => array('fukuoka'=>'福岡','saga'=>'佐賀','nagasaki'=>'長崎','kumamoto'=>'熊本','oita'=>'大分','miyazaki'=>'宮崎','kagoshima'=>'鹿児島','okinawa'=>'沖縄') );エリアローマ字(ローマ字=>漢字)
//「都府県」アリ $list = array( 'hokkaido' => array('hokkaido'=>'北海道'), 'tohoku' => array('aomori'=>'青森県','iwate'=>'岩手県','miyagi'=>'宮城県','akita'=>'秋田県','yamagata'=>'山形県','fukushima'=>'福島県'), 'kanto' => array('ibaraki'=>'茨城県','tochigi'=>'栃木県','gunma'=>'群馬県','saitama'=>'埼玉県','chiba'=>'千葉県','tokyo'=>'東京都','kanagawa'=>'神奈川県'), 'chubu' => array('niigata'=>'新潟県','yamanashi'=>'富山県','nagano'=>'石川県','toyama'=>'福井県','ishikawa'=>'山梨県','fukui'=>'長野県','gifu'=>'岐阜県','shizuoka'=>'静岡県','aichi'=>'愛知県'), 'kinki' => array('mie'=>'三重県','shiga'=>'滋賀県','kyoto'=>'京都府','osaka'=>'大阪府','hyogo'=>'兵庫県','nara'=>'奈良県','wakayama'=>'和歌山県'), 'chugoku' => array('tottori'=>'鳥取県','shimane'=>'島根県','oakayama'=>'岡山県','hiroshima'=>'広島県','yamaguchi'=>'山口県'), 'shikoku' => array('tokushima'=>'徳島県','kagawa'=>'香川県','ehime'=>'愛媛県','kochi'=>'高知県'), 'kyushuokinawa' => array('fukuoka'=>'福岡県','saga'=>'佐賀県','nagasaki'=>'長崎県','kumamoto'=>'熊本県','oita'=>'大分県','miyazaki'=>'宮崎県','kagoshima'=>'鹿児島県','okinawa'=>'沖縄県') ); //「都府県」ナシ $list = array( 'hokkaido' => array('hokkaido'=>'北海道'), 'tohoku' => array('aomori'=>'青森','iwate'=>'岩手','miyagi'=>'宮城','akita'=>'秋田','yamagata'=>'山形','fukushima'=>'福島'), 'kanto' => array('ibaraki'=>'茨城','tochigi'=>'栃木','gunma'=>'群馬','saitama'=>'埼玉','chiba'=>'千葉','tokyo'=>'東京','kanagawa'=>'神奈川'), 'chubu' => array('niigata'=>'新潟','yamanashi'=>'富山','nagano'=>'石川','toyama'=>'福井','ishikawa'=>'山梨','fukui'=>'長野','gifu'=>'岐阜','shizuoka'=>'静岡','aichi'=>'愛知'), 'kinki' => array('mie'=>'三重','shiga'=>'滋賀','kyoto'=>'京都','osaka'=>'大阪','hyogo'=>'兵庫','nara'=>'奈良','wakayama'=>'和歌山'), 'chugoku' => array('tottori'=>'鳥取','shimane'=>'島根','oakayama'=>'岡山','hiroshima'=>'広島','yamaguchi'=>'山口'), 'shikoku' => array('tokushima'=>'徳島','kagawa'=>'香川','ehime'=>'愛媛','kochi'=>'高知'), 'kyushuokinawa' => array('fukuoka'=>'福岡','saga'=>'佐賀','nagasaki'=>'長崎','kumamoto'=>'熊本','oita'=>'大分','miyazaki'=>'宮崎','kagoshima'=>'鹿児島','okinawa'=>'沖縄') );4次元配列(使わない。ネタ。)
$list = array( 'japan' => array( 'hokkaido' => array('hokkaido'=>'北海道'), 'tohoku' => array('aomori'=>'青森県','iwate'=>'岩手県','miyagi'=>'宮城県','akita'=>'秋田県','yamagata'=>'山形県','fukushima'=>'福島県') ・・・・・・ ・・・・・・ ・・・・・・ ), 'america' => array( 'arkansas' => array('fayetteville'=>'フェイエットビル','Jonesboro'=>'ジョーンズボロ'・・・・・・), 'iowa' => array('aomori'=>'ダベンポート',・・・・・・), ・・・・・・ ・・・・・・ ・・・・・・ ); );最後に
配列を複雑にしすぎても管理や操作が大変なのでほどほどにしておきましょう。
ここには載っていない「こんな配列がほしかった!」というご意見お待ちしております。
あなたが欲しいと思った配列は、いつか他の誰かが必要になるかもしれませんので、ここに掲載させていただきます!ご連絡お待ちしております。
おそまつ!
~ Qiitaで毎日投稿中!! ~
【初心者向け】HTML・CSSのちょいテク詰め合わせ
- 投稿日:2020-11-19T18:35:54+09:00
複数のLaravelアプリを任意のデータベースに接続する方法
はじめに
Laravelでの開発で、最初のサンプルアプリはつくってみた。
次は本格的にアプリケーションを作ってみたいけど
最初に使ったDBとは別のDBに接続してテーブル作りたい。
そんな時に試行錯誤した設定方法を備忘録として残します。
誰かの参考になれば幸いです。*1〜3の手順は初めてLaravelを使用する際にも通る工程です。
開発環境
MAC
VirtualBox
Homestead
vagrant 2.2.9
PHP 7.3.11
Laravel 5.5.481.Laravelのダウンロード
composerで新規のLaravelをインストールしていきます。
ターミナルを開いてHomesteadが置いてあるディレクトリまで移動します。
移動したら以下を打ち込んでください。
composer create-project laravel/laravel Laravel_new
Laravel_new
の部分はファイル名にあたります。任意のプロジェクトファイル名に変更してください。
ディレクトリ構造は
Laravel
|- Homestead
|- Laravel_sample
|- Laravel_new
となります。2.Homestead.yamlを編集する
~~省略 folders: //↓最初に設定したパス - map: /Users/ユーザー名/Laravel to: /home/vagrant/code //↓追加するパス 同じディレクトリなので設定する必要ないかもしれませんが一応いれておきます - map: /Users/ユーザー名/Laravel to: /home/vagrant/code sites: //↓最初に設定したパス - map: laravel.sample to: /home/vagrant/code/laravel_sample/public //↓追加するパス - map: laravel.new //ドメイン名になる。基本なんでもOKだけど全部小文字で! to: /home/vagrant/code/laravel_new/public databases: - homestead //↓使用したいデータベース名を設定します。これも何でもOK。2つ目のLaravelアプリで使用するテーブルがこのデータベースに入ります。 - laraveldb ~~省略2.hostsファイルにドメインを追加
hostsファイルは自身のPCに最初から入っているファイルです。
「hosts」で検索するとectというフォルダの中に入ってると思います。
先ほどのHomestead.yamlに追加したドメイン名と同じものを、このhostsファイルにも追記します。
必ず半角スペースをあけて追記しましょう。## # Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost 192.168.10.10 laravel.sample laravel.new ←これ注意点として、このhostsファイルはPC上の大事なファイルなので変更できないようになっています。
一度、デスクトップなどに移動させてから変更し、終わったら元の場所に戻すというやり方で変更できます。3.envファイルの設定
.envファイルに、今回のlaravel.newで使用するMySQLのデータベースにアクセスできるよう、設定を追加します。
~省略~ ↓もともとあったもの DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=*** ↓laravel.newのために追加するもの DB_CONNECTION_NEW=laravelnew DB_HOST_NEW=127.0.0.1 DB_PORT_NEW=3306 DB_DATABASE_NEW=laraveldb DB_USERNAME_NEW=root DB_PASSWORD_NEW=*** ~省略~末尾に追加した
_NEW
は区別するために加えたものです。
DB_DATABASE_NEW
はHomestead.yaml
のdatabases:
で設定した名前の通り指定します。
usernameとpasswordは自身のものを指定してください。今回は*で伏せています。4.database.phpの設定
Laravelのセットに入っているdatabase.phpに設定を追記します。
configフォルダに入っています。'laravelnew' => [ 'driver' => 'mysql', 'host' => env('DB_HOST_NEW', '127.0.0.1'), 'port' => env('DB_PORT_NEW', '3306'), 'database' => env('DB_DATABASE_NEW', 'laraveldb'), 'username' => env('DB_USERNAME_NEW', 'root'), 'password' => env('DB_PASSWORD_NEW', '***'), 'unix_socket' => env('DB_SOCKET_NEW', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ],変更箇所のみ抜粋しています。
追記が終わったら、一番上のdefaultも変更しておきましょう。
laravelnew
とは、前工程で編集したenvファイルのDB_CONNECTION_NEW
に設定したものです。'default' => env('DB_CONNECTION_NEW', 'laravelnew'),DB_CONNECTION名は、「この設定で指定した通りのものを使います!」という合言葉のようなもの(と認識しております。)です。違ったらご指摘いただけると幸いです…。
例えば、この先シーディングファイルにテーブルの初期値を入れることになるかと思いますが、その時に
DB::connection('laravelnew')->table('users')->insert([...])
とすると、database.phpに追記したデータベースに入れてくれます。
(defaultに設定しておけばこの手順は省けるはずなんですが、なぜか私の場合は使いたいデータベースに接続できず、最初に使用していたデータベースにシーディングされてしまいました…)5.設定の反映
ここまでできたら、今までの設定を反映させます。
database.phpなどの設定ファイルをいじった後は仮想OSを再起動しないと反映されません!
vagrant reload --provision
をターミナルに打ち込んでください。6.最終確認
これで設定は完了したはずですが、このまますぐにmaigrateしたりseedするのはちょっと怖いので
本当に設定できているか確認しましょう。
tinkerを使います。
vagrant ssh
でssh接続します。
cd
で自身のプロジェクトファイルまで潜って(今回はlaravel_new)
php artisan tinker
と叩きます。
以下は実行した処理内容です。vagrant@homestead:~/code/laravel_new $ php artisan tinker Psy Shell v0.9.12 (PHP 7.4.5 — cli) by Justin Hileman >>> config('database.default') => "laravelnew" >>> config('database.connections.laravelnew') => [ "driver" => "mysql", "host" => "127.0.0.1", "port" => "3306", "database" => "laraveldb", "username" => "root", "password" => "***", "unix_socket" => "", "charset" => "utf8mb4", "collation" => "utf8mb4_unicode_ci", "prefix" => "", "strict" => true, "engine" => null, ] >>>
config('database.default')
でdatabase.phpでデフォルトに設定したコネクション名がでてきます。
次に、config('database.connections.laravelnew')
で、database.phpに設定した内容が走ります。これで先ほど設定した内容がうまいこといってることが確認できました!
安心してマイグレーション、シーディングができますね。ちなみに実際にマイグレーションするときに
php artisan migrate --database=laravelnew
とすると確実にlaravelnewで使用したいデータベースに接続できるはずです。心配な方はやってみるといいと思います!
以上で任意のデータベースに接続する方法は終了です。
次回はできあがったアプリをHerokuにデプロイするまでの工程を記事にしたいと思います!この記事の内容に、間違っている点、もっとこうした方がいいという点などありましたらコメントいただけると幸いです。
- 投稿日:2020-11-19T14:42:59+09:00
DockerでWordpressのローカル環境構築&開発手順
Wordpressのローカル環境を構築したい時の選択肢
・MAMP
・XAMMP
・Local by flywheel
・Docker
おそらく一番簡単なのは3つめのLocal by flywheelだと思います。
私の場合は前者3つが手持ちのPC(MacOS13)で使えなかったので、Dockerでできる方法を調べました。Dockerによるローカル環境を構築
(参考: 初心者|Docker-ComposeでWordPressとMySQLとphpMyAdminのローカル環境の構築 )
Dockerとは...??って感じの人はかめさんのDocker超入門①〜Dockerってなに?〜【初心者向け】でまず勉強するといいと思います。プロジェクトファイルの中にymlファイルを作成
terminal.$ touch docker-compose.ymlymlファイルに以下をコピペ
docker-compose.ymlversion: "3" services: db: image: mysql:5.7 #container_name: "mysql57" volumes: - ./db/mysql:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: root_pass_fB3uWvTS MYSQL_DATABASE: wordpress_db MYSQL_USER: user MYSQL_PASSWORD: user_pass_Ck6uTvrQ wordpress: image: wordpress:latest #container_name: "wordpress" volumes: - ./wordpress/html:/var/www/html - ./php/php.ini:/usr/local/etc/php/conf.d/php.ini restart: always depends_on: - db ports: - 8080:80 environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_NAME: wordpress_db WORDPRESS_DB_USER: user WORDPRESS_DB_PASSWORD: user_pass_Ck6uTvrQ phpmyadmin: image: phpmyadmin/phpmyadmin:latest #container_name: "phpmyadmin" restart: always depends_on: - db ports: - 8888:80docker-composeをアップ
terminal.$ docker-compose up -dhttp://localhost:8080/ にアクセスしてみて、wordpressの管理画面が表示されてればok。
- 投稿日:2020-11-19T14:42:59+09:00
DockerでWordpress
Wordpressのローカル環境を構築したい時の選択肢
・MAMP
・XAMMP
・Local by flywheel
・Docker
おそらく一番簡単なのは3つめのLocal by flywheelだと思います。
私の場合は前者3つが手持ちのPC(MacOS13)で使えなかったので、Dockerでできる方法を調べました。Dockerによるローカル環境を構築
(参考: 初心者|Docker-ComposeでWordPressとMySQLとphpMyAdminのローカル環境の構築 )
Dockerとは...??って感じの人はかめさんのDocker超入門①〜Dockerってなに?〜【初心者向け】でまず勉強するといいと思います。プロジェクトファイルの中にymlファイルを作成
terminal.$ touch docker-compose.ymlymlファイルに以下をコピペ
docker-compose.ymlversion: "3" services: db: image: mysql:5.7 #container_name: "mysql57" volumes: - ./db/mysql:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: root_pass_fB3uWvTS MYSQL_DATABASE: wordpress_db MYSQL_USER: user MYSQL_PASSWORD: user_pass_Ck6uTvrQ wordpress: image: wordpress:latest #container_name: "wordpress" volumes: - ./wordpress/html:/var/www/html - ./php/php.ini:/usr/local/etc/php/conf.d/php.ini restart: always depends_on: - db ports: - 8080:80 environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_NAME: wordpress_db WORDPRESS_DB_USER: user WORDPRESS_DB_PASSWORD: user_pass_Ck6uTvrQ phpmyadmin: image: phpmyadmin/phpmyadmin:latest #container_name: "phpmyadmin" restart: always depends_on: - db ports: - 8888:80docker-composeをアップ
terminal.$ docker-compose up -dhttp://localhost:8080/ にアクセスしてみて、wordpressの管理画面が表示されてればok。
- 投稿日:2020-11-19T14:41:02+09:00
WEBサーバとDBサーバを使用してwordpressを構築
目的
wordpress構築手順とは別のサーバ構成を用いた構築手順になります。
どういうことかというと、
wordpress構築手順では、一台のインスタンスにWEBサーバーとDBサーバーの役割をまとめました。
今回の記事では、VMインスタンスを2台用意する。
一つ目のVMインスタンスにWEBサーバーを、二つ目のVMインスタンスにDBサーバーの機能を持たせ、
分離した構成とします。手順要旨
・WEBサーバーは、wordpress構築手順で作成したVMインスタンスを活用し、
手を加える。
・新たにインスタンスを一台作成し、DBサーバーの機能を持たせる。
・WEBサーバーからDBサーバーへの接続確認構築手順
WEBサーバ用VMインスタンスに手を加える
Wordpress 設定ファイル修正 wp-config.phpを作成して編集 #cd /var/www/html/wordpress #mv wp-config-sample.php wp-config.php #vi wp-config.php 下記項目を変更 特に'DB_NAME'と'DB_USER'はDB用VMインスタンスで作成するDBと名称一致させること define('DB_NAME', 'wordpressstep2'); define('DB_USER', 'wordpressstep2'); define('DB_PASSWORD', 'kamisama123'); define('DB_HOST', 'localhost'); define('DB_CHARSET', 'utf8'); define('DB_COLLATE', '');DB用に新規でVMインスタンス作成
インスタンス詳細設定内容は下記参照 [wordpress構築手順](https://itexpert.tips/ja/wordpress-ja/ubuntu-linux%e3%81%abnginx%e3%81%a7wordpress%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%99%e3%82%8b/#3)のVMインスタンス作成を参照MySQL インストール/データベース作成
#apt-get update #apt-get install mysql-server mysql-client #mysql --version MySQLサービスコンソールにアクセス #mysql -u root -p データベース作成 下記情報で作成(wordpressは自由に変更してください) •wordpressstep2という名前のデータベースを作成します。 •wordpressstep2という名前のMySQLユーザーアカウントを作成します。 •ワードプレスデータベースをワードプレスのユーザに完全に制御する。 ↑をもとに下記コマンド実行 mysql> CREATE DATABASE wordpressstep2 CHARACTER SET UTF8 COLLATE UTF8_BIN; mysql> CREATE USER 'wordpressstep2'@'%' IDENTIFIED BY 'kamisama123'; mysql> GRANT ALL PRIVILEGES ON wordpressstep2.* TO 'wordpressstep2'@'%'; mysql> FLUSH PRIVILEGES; mysql> quit;外部のホストからDB用VMインスタンスに接続するための確認事項
確認事項① 作業インスタンス:DB用VMインスタンス 下記コマンドを実行 mysql> select user, host from mysql.user; 実行結果 mysql> select user, host from mysql.user; +------------------+-----------+ | user | host | +------------------+-----------+ | wordpressstep2 | % | | debian-sys-maint | localhost | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+ 6 rows in set (0.00 sec) mysql> quit ここで確認したいことは、user:wordpresstep2 host:% の行です。 これは、wordpresstep2ユーザならどのホストからでも接続できるということです。 WEBサーバから下記コマンドで接続してみる # mysql -h DBサーバ用VMインスタンス外部IP -u wordpressstep2 -p Enter password: 結果、接続できない。ガーン確認事項② DBサーバ用インスタンスの設定ファイルで他のアドレスからのアクセスを許可することができる。 MySQL サーバの設定ファイルより bind-address をコメントアウトして接続できる IP アドレスの制限をはずす。 $ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 下記行をコメントアウトする bind-address = 127.0.0.1 下記行を追加 bind-address = 0.0.0.0 変更したら mysql サーバーを再起動しよう。 $ sudo service mysql restart sudo service mysqld status WEBサーバから下記コマンドで接続してみる # mysql -h DBサーバ用VMインスタンス外部IP -u wordpressstep2 -p 結果だめ確認事項③ DBサーバのfirewallにポート(3306)の追加し、ポート3306で他のホストからのアクセスを許可 #apt install firewalld #firewall-cmd --list-ports 実行結果何も登録されていない ポート(3306)の追加 #firewall-cmd --add-port=3306/tcp --zone=public #firewall-cmd --list-ports WEBサーバから下記コマンドで接続してみる # mysql -h DBサーバ用VMインスタンス外部IP -u wordpressstep2 -p Enter password: 結果、接続できない確認事項④ db-wordpressでfirewallにmysqlを使えるように設定する。 状態チェック firewall-cmd --list-services --zone=public --permanent 実行結果 dhcpv6-client ssh mysqlが無いので、追加 # firewall-cmd --add-service=mysql --zone=public --permanent 実行結果 success リロード #firewall-cmd --reload WEBサーバから下記コマンドで接続してみる # mysql -h DBサーバ用VMインスタンス外部IP -u wordpressstep2 -p Enter password: 結果、接続できたーーWordpressに接続
ブラウザを開き、下記URLに接続 http://(WEBサーバVMインスタンス外部IPアドレス)/wordpress
- 投稿日:2020-11-19T13:52:26+09:00
配列の中のnullの要素を排除する方法
<?php function valuecomp($var){ // null以外の値を返す return($var <> null); } $value_array = [100, 200, null, 400, null]; //array_filterを使用してコールバック関数に配列を渡す $value = array_filter($value_array, 'valuecomp'); var_dump($value); ?>実行結果 array(3) { [0]=> int(100) [1]=> int(200) [3]=> int(400) }//配列の番号を詰める場合は、これ array_values($value); var_dump($value);実行結果 array(3) { [0]=> int(100) [1]=> int(200) [2]=> int(400) }
- 投稿日:2020-11-19T13:31:46+09:00
memory_limitをmacで編集する方法【エラー:Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52】
ある日にcomposer requireすると、エラーが表示
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52 Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.%memoryがいっぱい?
macの容量、メモリ共に空いていますけど??調べてみると、
php.iniに記載されている、memory_limitが上限に達したようだ。
デフォルトだと128MBが設定されているので、それを更新させる必要がある。php.iniを作成
macには
php.ini.default
というファイルが存在し、これをコピーで複製して、設定を変えて改善させます。ファイルの場所は
/private/etc/php.ini.default
です。
コマンドで確認したい場合は、php -i | grep php.iniで確認できます。
なので、これをコピーしてphp.iniを作成しましょう。
sudo cp -p /etc/php.ini.default /etc/php.iniでphp.iniを作成します。
容量の変更
現在のメモリーを確認するコマンドを実行しましょう。
コマンド$ php -i | grep memory_limit memory_limit => 128M => 128M128Mと分かります。
これを変更したいので、vim /etc/php.inimemory_limitを見つけて変更します
容量の上限を上げるmemory_limit = 528M容量を無制限にするmemory_limit = -1保存時にエラーが発生する
[vim]read onlyと表示されて、
:wq
で保存できません。そこで、
:w !sudo tee %
を手入力して実行画面に変化が現れますので、さらに
vim画面から脱するために
:q!
で終了します。確認
$ php -i | grep memory_limit memory_limit => -1 => -1これで反映されたことが分かります。
改めてcomposerを実行すると、
Package manifest generated successfully.とインストールに成功したことが分かります。
これで解決ですその他
調べると他の方法もあるようです。
コマンド$ composer updateでエラーが出た場合、
コマンド$ php -d memory_limit=512M composer updateと
php -d memory_limit=512M
をつけることで実行可能みたいです。composer requireだと
$ php -d memory_limit=-1 composer.phar require ~と記述することで実施可能みたいです。
- 投稿日:2020-11-19T11:04:11+09:00
ソートの関数を使わずに配列を並び替える「バブルソートアルゴリズム」
課題
下のようなGETポストが渡ってきたと仮定し、それをソート関数を使わずに小さい順に並び替えるという機能をPHPで作る学習で試行錯誤したのでその跡を残しておきたく。
http://localhost:10080/index.php?array=3,2,1,4,15,18,13,99,77,66,1,100,0バブルソートというアルゴリズムでこれが実現できます。バブルソートとは、一つのループの中にもう一つループを作り、内側のループで隣り合う数字の大小を比較して並び替えていくことで、配列全体を並び替えます。Wikipediaの説明がわかりやすいです。
実装
<?php $array = explode(',', $_GET['array']); //explode()はExcelの「区切り」みたいなもの $count = count($array); for ($i = 0; $i < $count; $i++) { for ($n = 1; $n < $count; $n++) { if($array[$n-1] > $array[$n]) { $temp = $array[$n]; //右隣の方が大きかったらその右の数字を$tempに逃がす $array[$n] = $array[$n-1]; //左側を右側に代入 $array[$n-1] = $temp; //逃がしていた右側を左側に代入 } } } print_r($array); ?>アルゴリズムとは関係のない、PHPの復習ですが、
$_GET
はPHPの定義済みの変数で、URLで渡されたパラメータ(クエリストリング、クエリ文字列と同義)を受け取ります。参考→URLパラメータ
$_GETにはPHPの関数urldecode()
が処理してから値が渡されるようです。結果
改善
$n-1
が何回も出てくるのが気になったので、こうしてみました↓
きちんと同じ結果が得られます。$count = count($array); for ($i = 0; $i < $count; $i++) { for ($b = 1; $b < $count; $b++) { //右隣の数字を$bとする $a = $b-1; //←左隣の数字を$aとする if($array[$a] > $array[$b]) { $temp = $array[$b]; $array[$b] = $array[$a]; $array[$a] = $temp; } } }余談
試行錯誤の跡として、こちらが最初にトライしたコーディングです。配列の中から一番小さい値を探して別の変数に代入し、その値を元の配列から削除するというものです。これだと同じ数が複数個あった場合(今回だと1が2回ある)、その数は1個しか取り出せませんでした。
http://localhost:10080/php-pre-challenge2/index.php?array=3,2,1,4,15,18,13,99,77,66,1,100,0
<?php $array = explode(',', $_GET['array']); $sorted_array = []; $count = 0; while ($count < count($array)) { $tmp = null; foreach ($array as $key => $value) { if (in_array($value, $sorted_array)) continue; if ($tmp === null) { $tmp = $value; } else { $tmp = min($tmp, $value); } } $sorted_array[] = $tmp; $count++; } print_r($sorted_array); ?>ご指摘などあれば、コメントにてお願いします!
- 投稿日:2020-11-19T09:40:52+09:00
WordPressで記事の状態を確認する関数
公式 → WordPress codex
WordPressでの記事の状態にてその後の処理を決めるために
記事の状態を取得する処理を実装した<?php get_post_status( $ID ) ?>既に用意されている関数だったのでリファレンスをしっかりと読めば
直ぐに処理を追加することが出来た
上記の$IDの中身は下記のいずれかになるのでそれに対して
条件を作れば求めた処理ができる- 'publish' - 公開済 - 'pending' - 承認待ち - 'draft' - 下書き - 'auto-draft' - 新規作成された投稿。まだコンテンツがない。 - 'future' - 予約済(未来に投稿される) - 'private' - 非公開(ログインしていないユーザーから見えない) - 'inherit' - リビジョン。get_children() を見てください。 - 'trash' - ゴミ箱にある投稿。バージョン 2.9 で追加された。条件の例
<?php if ( get_post_status ( $ID ) == 'private' ) { echo '非公開'; } else { echo '公開済'; } ?>今回自分が実装したものは
上記の一例にカスタムフィールドの値の確認を条件に追加したので
それについては後日纏めます。
- 投稿日:2020-11-19T08:42:15+09:00
PHP テンポラリーファイルが作成されるディレクトリを確認する
- 投稿日:2020-11-19T02:52:40+09:00
【PHP】日本語のyyyy年MM月dd日という文字列をyyyy-MM-ddにサクッと変換する方法
はじめに
先日teratailで回答した内容と同じになりますが、メモも兼ねて。
PHPのバージョン 7.4.10 コードと簡単な説明
$date = DateTime::createFromFormat('Y年m月d日', '2020年11月19日'); echo $date->format('Y-m-d'); // 出力:2020-11-19日時表示を特定のルールでフォーマットする場合は、
DateTime::createFromFormat
が便利です。
第1引数に書式を、第2引数に日時を渡すと、フォーマットされたDateTime型のインスタンスが返ってきます。返り値
新しい DateTime のインスタンス、失敗した場合に FALSE を返します。公式ドキュメントにはサンプルや書式のオプションも色々書いてあるので、詳しく知りたい方はそちらをご確認ください。
- 投稿日:2020-11-19T02:24:07+09:00
array_slice関数
array_slice
配列の一部の範囲をスライス(切り取る、取得する)
array_slice(array $array, int $offset [,int $lenght = NULL[, bool $preserve_keys=False]]):array引数
$array=>対象の配列
$offset=>取得したい要素
$lenght=>取得したい要素の数
$preservekeys=>trueのときは、引数preservekeys=>trueのときは、引数arrayのキー番号を保持した戻り値を返す。falseのときは、戻り値のキー番号は始まりになる
戻り値
offsetから$lenght分の要素
使用例
入力
$array=["a","b","c","d","e","f","g"]; echo var_dump($array); $array_slice=array_slice($array,3,2); echo var_dump($array_slice);出力
array(7) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "d" [4]=> string(1) "e" [5]=> string(1) "f" [6]=> string(1) "g" } array(2) { [0]=> string(1) "d" [1]=> string(1) "e" }