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

Web

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

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

どもです。
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'] 以外のサーバー変数については、参考サイト様を見ると良いと思います。... 続きを読む »

onblurからのalertで再focusしたらバグる問題

Web > javascript 2017年6月6日(最終更新:3日前)

どもです。
まこと久々のjs関係の更新です。

テキストボックスをonblurで入力チェック、
望んだものでなければalert(もしくはconfirm)を呼び、再びfocusで入力し直させる。

一般サイトだと時代遅れのブツではありますが、
裏側ならまだ現役のalert()。
こういったことは、やりたくなることがあると思います。

が、

他の動作であれば正常に動くのですが、focusに限ってはこれバグるようです。

しかも、ブラウザによってバグの内容が異なり、
firefoxならフォーカスが移動してくれない程度で済むのですが、
cromeだと閉じても閉じても延々とalertが発動し続けるという悪夢が。

で、どうしてこんな現象が起きるのか。

推測ですが、alertを閉じるとフォーカスの処理が自動的に発生するのではないかと。... 続きを読む »

エックスドメインWP4.7更新時、管理画面のエディタ等に不具合が発生する件の対処

Web > WordPress 2017年1月29日(最終更新:2年前)

どもです。
ウェブ関係の更新はとても久しぶりです。

ここまでのあらすじ

先日、WordPress4.7にアップグレードしたのですが、
その際にエディタがテキストで固定され、ビジュアルエディタが使えなくなる不具合が発生しました。

この症状には見覚えがあります。
プラグインないしテーマのjsの書き方が、更新された本体のjsとバッティングする奴です。

というわけで、プラグインとテーマを一通りオフにしてみたものの、
何故か今回は問題が解決しません。
軽く調べてみてもそのような問題は見られず、本体のバグでもなさそう。

まぁテキストだけでも記事は書けるので、問題を放置していたのですが…
このたび、サイトにフォームメールを設置してみたのです。
しかしjsエラーのせいで頁のパーマリンクが変えられない。

これは解決せねばまずい、と思い調べてみたところ、
どうやら... 続きを読む »

MTで記事のアーカイブマッピングを設定したのにパーマリンクがアーカイブページへのリンクになるとき

Web > Other 2016年5月18日(最終更新:3年前)

どもです。

MovableTypeで作業中、
記事ページを作成してアーカイブマッピングを設定したのに、
いざ記事を作ってみるとパーマリンクの値がおかしい。

具体的には、記事ページへのリンクにならず、アーカイブページ#記事IDになっている

このとき、チェックするべきは、

h280518

設定>全般設定>アーカイブ設定>優先アーカイブタイプ

この優先アーカイブタイプを「記事」に設定し、保存。
以上でこの問題は解決できます。

公式の解説を見てみたのですが、この優先アーカイブタイプというのがよくわからない。
記事ページを持たず、アーカイブに全文表示するときに変更する項目…という捉え方で良いのでしょうか。... 続きを読む »

MTで生成したファイル「だけ」500エラーになったらパーミッションを確認

Web > Other 2016年5月13日(最終更新:3年前)

どもです。

MovableTypeを使ったサイト作成をしていたところ、
MovableTypeで生成したファイルのみ、アクセスすると500エラーになる事件がありました。

それで知ったのが、
サーバーによってはパーミッションの緩いファイルはアクセスすると500エラーになるということ。

で、MTが自動で生成するファイルはデフォルトでパーミッション「666」。
ちょっと緩い。

防犯性の観点においても、「644」とか「604」とか、その辺りが安全です。

ということで、MTの設定を変更。
こういった根本的な設定変更は、だいたいmt-config.cgiに書き足す感じでおkです。
WordPressでいうfunctions.phpのノリですね。

# パーミッション設定... 続きを読む »

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

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

どもです。

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

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

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

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

h280511

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

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

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

複数のカテゴリから残り1つのカテゴリを絞り込み、選ばれたカテゴリからページを取得する

Web > javascript 2016年4月20日(最終更新:3年前)

どもです。

今回のお題はこんな感じ。

カテゴリ①②の両方を持つpostのカテゴリ③だけが表示される→選択されたカテゴリ名.htmlを取得して表示!

…この図でわかるのだろうかw
説明しますと、

複数の種類のカテゴリと(カテゴリ①~③)、
複数のカテゴリを持つ記事(post)を用意

カテゴリ①や②を選択すると、そのカテゴリを含むpostを探し、
そのpostが所持している特定のカテゴリ(カテゴリ③)を取得する

取得したカテゴリ③だけを表示し、取得できなかったものは非表示にする

更に、選択されたカテゴリ名を繋げてURLを作り、ページを取得する

といった仕様と手順です。
URLの取得、ページ取得の処理を変更すれば、様々なものに応用できると思います。... 続きを読む »