PHP

wmaをmp3に変換するやつ

必要なソフトウェア PHP5 FFMpeg 使い方 cd /path/to/wma_files # wmaファイルを置いているディレクトリに移動 php convert_wma_to_mp3.php 感想 FFMpeg、最初は取っ付きづらいけど、一度覚えると色々捗る PHPで書いたのは一番早く書けそうだったから Perlの…

array_reduce()の便利な使い方

http://madroom-project.blogspot.jp/2014/03/arrayreduce.html array_reduce()ってどんな時に使うと便利なのかなー。 演算方法をカスタマイズしたい時に便利。

第53週の週番号が「01」になる件に対応する関数を書いた

※下書き段階で投稿してしまったので、再投稿 PHPのdate('W')が返す週番号は、第53週では'01'を返します。strftime('%W')も同様です。 http://php.net/manual/ja/function.date.php http://php.net/manual/ja/function.strftime.php

絵文字の変数を使う

Perlでは、use utf8;を宣言することで、ソースコードのコメント・文字列以外の部分に、UTF-8文字列を含めることができる。 UTF-8文字列には、通常プログラムを書く際に用いるASCII文字列(いわゆる半角英数字+半角記号)に加え、日本語の文字列や、絵文字ま…

PCRE正規表現のUTF-8モードにおける「\d」の挙動

PHPで、PCRE正規表現の使用時に「u」オプションを指定すると、パターン文字列をUTF-8文字列として処理する「UTF-8モード」になります。 参考:PHP: 正規表現パターンに使用可能な修飾子 - Manual UTF-8モードでは、「\d」は半角数字以外の数字(全角数字等)…

curlを使わずにtwitterに投稿する

twitter APIにアクセスするためのPHP製ライブラリとしては、codebird、twitteroauthなどありますが、大抵はcurl系の関数を使っています。ただ、curl系の関数は必ず使えるわけではなく、コンパイルオプションを指定したり、PHP 5.5以降ではPECLからインストー…

間違いやすい真偽値メモ

PHP5で、以下の式・値を真偽値として評価(var_dump((bool)$value)するとどうなるか。 0 + true0 + 'true''0''00''0.0'解答は以下。 0 + true // 真偽値trueはintとして評価されると1になるので、0 + 1 = 1 true 0 + 'true' // 文字列'true'はintとして評価…

パーフェクトPHP読書メモ その1

パーフェクトPHP (PERFECT SERIES 3) [大型本]小川 雄大技術評論社2010-11-12『パーフェクトPHP』を1年ぶりに読み返したら、色々再発見があったのでメモっておきます。----------「どんなプログラムでもいえることですが、テストコードを見ることは内部の挙…

arguments.calleeをPHPでやってみた

JavaScriptには、arguments.calleeという、自分自身を再帰的に呼び出すプロパティがあります。arguments.calleeを使うと、以下のようなコードが書けます。 function factorial(n) { if (n > 1) { return n * arguments.callee(n - 1); // 自分自身(factorial…

header('Location:');でハマった

小ネタなのだけど結構ハマったのでメモ。PHPにはheader関数というものがあり、HTTPヘッダーを送信できる。header関数の用法として最も多いのは、Locationヘッダーによるリダイレクトだと思う。例: header("Location: http://www.example.com/"); これが実行…

タイプヒンティングに使える型・使えない型

PHPのタイプヒンティング PHP5では、関数・メソッドのパラメーターの型を指定する、タイプヒンティングが利用できます。例: function type_test(array $array) {} type_test(1); これを実行すると、「PHP Catchable fatal error: Argument 1 passed to type…

数値添字配列の並び順

問 次のPHPスクリプトの出力はどうなるか? $array = array( 0 => 'zero', 2 => 'two', 1 => 'one', ); foreach ($array as $value) { echo $value, PHP_EOL; } 答zero two one 数値添字の昇順に「zero, one, two」と出力されるわけではないので注意が必要で…

浮動小数点数の比較

プログラミングの常識ではありますが、PHPでも浮動小数点数の比較には注意が必要です。例えば、次のプログラム。 $a = 8; $b = (0.1 + 0.7) * 10; if ($a == $b) { echo '等しい'; } else { echo '等しくない'; } 「(0.1 + 0.7) * 10 = 8」だから、出力は「…

フォームからの入力値が正の整数か判別する

PHPでの整数値か否かの判別、is_int()でいいじゃんと思ってたらダメだった。PHPマニュアルのis_int()の解説より抜粋↓変数が数値もしくは数値形式の文字列の場合 (フォームからの入力の場合は 常に文字列となります) 、 is_numeric() を使用する必要がありま…

DateTime::diffで誕生日までの日数を求める

DateTimeクラスの練習として作成したPHPスクリプト↓ $my_next_birthday = '2013/05/11';//次の誕生日 $today = new DateTime(); $birthday = new DateTime($my_next_birthday); $interval = $today->diff($birthday, true); echo $interval->format('あなた…

func_get_args()で可変長引数

PHPマニュアルのfunc_get_args()のサンプルを一部改変。 function foo() { $arg_list = func_get_args(); for ($i = 0; $i < func_num_args(); $i++) { echo 'args no.', ($i + 1), ' is ', $arg_list[$i], PHP_EOL; } } 任意の個数の引数を与えると、全ての…

array_splice()関数の動きを整理する

PHPのarray_splice()関数は、配列操作関数の万能選手。単独で様々な操作が可能です。しかし反面、オプションが多くて挙動が分かりにくい。そこで、基本事項を整理しておきます。まずは引数と戻り値について。 array array_splice ( array &$input , int $off…

初めてのfizzbuzzワンライナー

今日、『パーフェクトPHP』を読んでいたところ、range()、array_map()そして無名関数と、fizzbuzzをやるのにぴったりな関数がバシバシ出てきました。ということで、書いてみました、fizzbuzzワンライナー。

設定はコードより強し

絵文字変換で詰まって、1日費やしました。絵文字変換のライブラリ(HTML_Emoji)は正しく導入した。コードにもバグは見当たらない。なのに動かない…。原因は、PHPの設定(php.ini)で文字コードの自動変換(mbstring.encoding_translation)がONになっていることで…