ど素人から毛を生やす。<延>

PHP

[php]switch->caseの中で正規表現してみた

Web > PHP 2017年9月13日(最終更新:1年前)

どもです。

例えば様々な項目の中に「url1」から「url5」までがあるとして、
これをswitchで処理したい場合があったとします。

このとき、「urlX」は同じ処理にしたい。
その場合、こういう書き方になると思います。

これ、URLが例えば20まで増えたら?

case20個書くの?? うへぇ。嫌だぁ。

と思ったら、caseには関数や条件式が使えたのか。

ここで注意したいのが、if()だとpreg_match()でいいところが、switchだとpreg_match()===1になる点。

ifの場合、preg_match()でマッチできたときは1≒trueが入って問題ないのですが、
switchの場合はきちんとtrueを返してやらないとダメっぽい。

この記事は役に立ちましたか?
  • _(:3」∠)_ 面白かった
... 続きを読む »

PHPの配列を任意の位置で分割するにはarray_splice()を使えば良かったのか

Web > PHP 2017年9月8日(最終更新:1年前)

どもです。

クラス直下の連想配列に、大量の連番な配列を加えなければならなくなり、
そんなモン手書きでやってられっかと配列の任意の場所に配列を加える方法を探しました。

ありました。
[Qiita]PHPで連想配列の任意の位置に要素を挿入・削除する

神かよ。

中身を読んでみたのですが、
ベース配列を挿入する位置の前後で分ける動作をどこで行っているのかがわからず、調べることに。

で、結論としてはarray_splice()がその主犯だったわけなのですが。

array_splice()の基本的な挙動
・実行すると、ベースの配列が変更される
・左辺に変数を設けると、ベースの配列から弾かれた要素が格納される

第三引数を設けない(第三引数は削除範囲)と以降全てが削除対象となり、
格納用変数に第二引数後の要素が入る。
また、元の配列は第二引数以前の要素のみが残る。... 続きを読む »

PHPの開発エディタは必ず空白が可視化できるものを使おうと誓った話。

Web > PHP 2017年8月30日(最終更新:1年前)

どもです。
今回はちょっと吃驚したトラブルの話。

本来、やりたかったことはとてーもシンプル。

実際は$telに値を入れてから色々処理して最終的な$storage[]に入れるわけですが。

重要なのはループの中で、複数回、処理用の変数$telに新しい値を入れて使用していること。
勿論、この行為自体には何も問題がありません。

が、このたび電話番号2の$telが、電話番号1の$telを引き継いでしまう事件が発生しました。

どーいうこっちゃと頭抱えながらエディタを睨み付けたところ…

うそだろバーニィ…

これエラーになんねーのかよ…

そういえば、PHPって変数名を全角にできるんだった…

つまり、変数【$tel】ではなく、変数【$tel 】として登録されてしまったと。
電話番号2の処理で変数【$tel】呼び出せば、必ず電話番号1が先に処理されるのであれば、
電話番号1の変数【$tel】が継承されることになる。... 続きを読む »

phpで改行を置換したいが「\n」と「\r\n」の違いに首を傾げた話。

Web > PHP 2017年7月5日(最終更新:11月前)

どもです。
phpで改行を置換することになり、ちょっと悩んだのでメモ。

置換等を行う際、改行処理は制御文字を用いて行う必要があります。

が、

どうにも改行用の制御文字には「\n」と「\r\n」の2種類があるらしい。

で、この違いは何ぞやと調べてみたところ、
stack overflow にとても分かり易い回答があったので引用します。

\nはLF文字(Line Feed)、\rはCR文字(Carriage Return)と呼ばれる制御文字です。
テキストの改行を表現する方法は、システムによって下記3パターンが存在します。その表現方法が使われている代表的なOSも併記しています。

\n(LF):Unix系OS全般、Mac OS

... 続きを読む »

phpにおける正規表現の超基本を学ぶ。

Web > PHP 2017年6月22日(最終更新:1年前)

どもです。

この頃、正規表現を扱うことが増えたので、ちょっとど素人のままではいられなくなってきた。
ので、まじめに勉強してみようと思った次第です。

正規表現の超基本ルール

( ・ิω・ิ) そもそも正規表現って何やねん。
( ◉◞౪◟◉) 一定の規則に従った文字列を、1つの文字列で表現する方法。

( ・ิω・ิ) なんで正規表現なんて使うん?
( ◉◞౪◟◉) ... 続きを読む »

PHPで関数がどこから実行されたか探る

Web > PHP 2017年6月13日(最終更新:1年前)

どもです。
昨日に引き続き、デバックするのに便利そうなPHPの小技。

頻繁にひっぱりだこな関数だと、
どこから呼び出されたのかソースから探るのは難しい。

ので、関数がどこから実行されたか探るコマンド。

関数名もあった方が便利かもしれない。お好みで。

debug_backtrace()というのが今回のミソ。
関数がどこから実行されたか、最後から順に辿って配列に納めていく関数です。

ただ、単にdebug_backtrace()を出力するだけでは
ソース次第ではもう大量のデータが書き出されてブラウザが止まりかねないし見辛い。

ので、いちど配列に格納して、ファイル名["file"]と行数["line"]のみ出力。

ちなみに全データ出力ならvar_dump(debug_backtrace())で良いですが、
確実に見辛いのでちょっと整形してみました。


参考サイト
お名前.com、さくらのVPS等のサーバーでの開発・設定メモ... 続きを読む »

PHPで自分が今どこにいるか確認する

Web > PHP 2017年6月12日(最終更新:1年前)

どもです。

巨大なPHPプロジェクトの修正作業があったとして、
エラーログを出さない箇所の修正や、
エラーの原因がエラーの場所と異なる場合に役立つかもしれない、

現在のファイルパスと行数を出力するだけのコードです。

いちおう解説しますと、
__line__ は行数を出力してくれる便利定数。
$_SERVER['PHP_SELF'] が現在のファイルパスを教えてくれるサーバー変数というものです。

サーバー変数とは、サーバー情報および実行時の環境情報だそうで、
サーバーが自動的に生成してくれる変数とのこと。
$_SERVER['PHP_SELF'] 以外のサーバー変数については、参考サイト様を見ると良いと思います。... 続きを読む »

Instagramで投稿した画像をAPIを使って取得・表示するまで

Web > PHP 2016年5月11日(最終更新:2年前)

どもです。

Instagramとウェブサイトの同期、というのは今どき結構需要があったりします。
単にInstagramに投稿した写真を並べるだけであれば、公式APIの必要は無い、そうなのですが、
こういった見た目にしたいとか、こういう情報が欲しいとか、やり始めれば必ずカスタマイズしたくなるものです。

ので、APIを利用した取得と表示の仕方をば。

アクセストークンを取得する

APIを利用するには、「アクセストークン」というものが必要になります。
これの取得の仕方ですが、

h280511

Instagramにログインすると、フッターのメニューに「API」へのリンクがあるのでこちらをクリック。
するとAPI開発画面に移れます。
が、
全部英語です。ご注意。

取り敢えず、目立つところにあるこちらのボタンをクリック。
Register Your Application

プロフィール等の登録画面に移ります。
適当に入力して利用規約に同意。これで開発者として登録されました。... 続きを読む »

PHPのフォームメールの結果をCSVに保存

Web > PHP 2015年12月17日(最終更新:3年前)

どもです。

結果をcsvに蓄積保存する、phpのアンケートフォームを作りました。

フォーム自体のやり方は数多くの先駆者サイトがありますので置いておいて、
結果をcsvで保存するphpを晒します。

csvに書き込む動作はphpで完璧にサポートされている

たったの、3行のphpでcsvに書き込むことができます。

fopen で書き込み先ファイル(file.csv)と書き込みモード(a)を指定する

fputcsv で書き込みたい配列($_POST)を指定して、実際にcsvに書き込む

fclose でcsvファイルを閉じて終了... 続きを読む »

PHPの@file_get_contentsが動かないとき確認したい簡単なミス

Web > PHP 2015年4月13日(最終更新:3年前)

どもです。

今回はPHPの話。
Facebookのタイムラインのように、スクロールしていくことで自動的に次のソースが読み込まれるPHPを作りました。結構前に。

で、今回、それを別のサイト(作成中)に導入したのですが、上手く動いてくれません。
原因を探ったところ、どうやらPHPの@file_get_contentsで躓いているよう。

そーいうのが動かない環境なのかな?
と思い、同じ動作をする「curl」に書き換えてみたところ、401エラーが表示されました。

401エラー。
認証エラー、ということですが、果たして。

 

SEの先輩「ベーシック認証かかってない?」

餅。「( ゚д゚)ソレダ!!」

 

所謂、テスト環境のサイトだったので、ベーシック認証がかかっていました。... 続きを読む »