タグ

phpとtipsに関するdesignstalkerのブックマーク (24)

  • パフォーマンスを意識して正規表現を書く - Shin x Blog

    正規表現を書く際、どのようなパターンにマッチさせるか、どこをキャプチャするかという視点で記述することはあっても、パフォーマンスを考えて記述するというのはある程度知っている人でなければ忘れがちな視点です。 このエントリでは、バックトラックをメインに正規表現がパフォーマンスに及ぼす挙動について見ていきます。 対象の正規表現エンジン ここでは、従来型 NFA を対象としています。具体的には、PHP の preg_ 関数で利用している PCRE や mb_ereg 関数が利用している鬼車です。PerlRubyPythonJava、.NET でも従来型 NFA を採用しているので、似た挙動となるでしょう。 「従来型 NFA」や「バックトラック」などの用語については、「詳説 正規表現 第3版」のものを用いています。 バックトラックによるマッチ探査 正規表現エンジンでは、指定された文字列が、パ

    パフォーマンスを意識して正規表現を書く - Shin x Blog
  • PHPの便利な日時操作ライブラリCarbonで曜日を日本語で表示する | A Small, Good Thing – blog

    みんな Carbon 使ってるー?私は毎日使ってます。 ところで、曜日を表示しようと思って、 echo Carbon::now()->format('Y年m月d日(D)'); とかやると、2016年03月09日(Wed)ってなって、いやん、となったことありませんか?私はあります。 そんな時は、setlocale()とformatLocalized()メソッドを使うと、、 setlocale(LC_ALL, 'ja_JP.UTF-8'); echo Carbon::now()->formatLocalized('%Y年%m月%d日(%a)'); 2016年03月09日(水)ってなるんやで。 それぞれ、利用する変換指定子が異なるので注意。 format()の時 http://php.net/manual/ja/function.date.php formatLocalized()の時 http

  • PHP で配列を走査して処理するのは、for / foreach だけじゃない

    PHP で配列の要素にアクセスして、処理を行うには、for や foreach を使うのがおなじみです。 この方法でも良いのですが、PHPには、それ以外にも配列を走査する関数やライブラリがあります。ここでは、配列を走査して処理を行う方法を見てみましょう。 サンプル仕様 このエントリで以下の配列を処理対象とします。array.phpで保存されている想定です。 <?php return [ [ 'id' => 1, 'year' => 1993, 'name' => 'Harada', ], [ 'id' => 2, 'year' => 2001, 'name' => 'Kato', ], [ 'id' => 3, 'year' => 2009, 'name' => 'Aoyama', ] ]; この配列について処理を行います。 配列内に連想配列が格納されており、nameとyearというキーを

  • PHP 定義されている情報(クラス、関数、変数等)を取得する関数まとめ

    PHP には、定義されているクラスや関数、変数などの一覧を取得する関数があります。 ここでは定義情報を取得できる関数群をまとめてみました。ここでは実行例として、Laravel アプリケーションのビューテンプレート(hoge.blade.php)で実行した内容を記載しています。 定義された情報を取得する関数群 get_defined_constants() 定義されている定数を連想配列として取得します。キーが定数名で、要素がその値となっています。 http://www.php.net/manual/ja/function.get-defined-constants.php 出力してみると、1771 個の定数がありました。内容を見ると、フレームワークやアプリケーションで定義されたものの他に、PHP体や extension で多数の定数が定義されていることがわかります。 array (size

  • PHPで便利なソート色々まとめ | zaru blog

    多次元配列の中のキーでソート $lists = array( array( 'id' => 1, 'name' => 'a', ), array( 'id' => 2, 'name' => 'b', ), array( 'id' => 3, 'name' => 'c', ), array( 'id' => 4, 'name' => 'd', ), ); 多次元配列で、idをキーに降順でソート usort($lists, create_function('$a,$b','return($b[\'id\'] - $a[\'id\']);')); 多次元配列で、nameをキーに昇順でソート usort($lists, create_function('$a,$b','return($a[\'name\'] - $b[\'name\']);')); usort()を使えばユーザ定義比較関数を使うこ

  • PHPで連想配列にkeyが存在したら値を追加しない、存在しなければ値を追加する、の書き方 - こんにちはこんにちはmonmonです!

    たまたまCakePHPのFilelLogエンジンのソースを見ていたら $options += array('path' => LOGS); という書き方があって「あれ、この書き方知らない」となったので確認した。 結果はタイトル通り、「keyがあれば何もしない、keyがないなら値を追加する」だった。 <?php $options = array(); $options += array('path' => 'LOGS'); var_dump($options); // array(1) { // ["path"]=> // string(4) "LOGS" // } $options = array('path' => null); $options += array('path' => 'LOGS'); var_dump($options); // array(1) { // ["path

    PHPで連想配列にkeyが存在したら値を追加しない、存在しなければ値を追加する、の書き方 - こんにちはこんにちはmonmonです!
  • IDEA * IDEA

    ドットインストール代表のライフハックブログ

    IDEA * IDEA
  • PHPでバッチ処理する際に便利なglob使いこなしテクニック:phpspot開発日誌

    PHP Magic Function : glob() | PHP Code Base PHPでバッチ処理する際に便利なglob使いこなしテクニック。 globl("*.gif"); 等とすることで、同じディレクトリにある gif 拡張子のファイルを配列で受け取るなんていう便利な関数がありますが、その glob をもっと使いこなすテクニックが紹介されていましたのでご紹介。 階層的なファイルを探索 glob('pear/*/DB/*') のようにして、階層的にファイルを探索することが出来る 第二引数を活用 第二引数は個人的に使ったことなかったのですが、これはかなり便利そう glob("*.gif", 第二引数); GLOB_MARK: 返ってきたディレクトリの最後に / を付ける GLOB_NOSORT: ソートを行わない GLOB_NOCHECK: 検索パターンにマッチするファイルが見つか

  • 知っとくと便利なPHPのテクニック9つ:phpspot開発日誌

    9 Useful PHP Functions and Features You Need to Know | Nettuts 知っとくと便利なPHPのテクニック9つが掲載されていました。 初心者の方は勿論、PHPを長年使ってる人にも使えるテクニックが載っていましたので勉強がてらにメモ。 func_get_args() 関数で可変引数 を受け取る 通常、関数といえば、次のように引数と共に定義します。 function hoge($arg1, $arg2) { } のように定義して引数を受け取りますが、好きな個数で引数を受け取りたい場合は、次のようにfunc_get_argsで受け取れます。 function hoge() { $args = func_get_args(); foreach ($args as $key=>$value) { echo "arg{$key} is $value

  • PHP で引数をそのまま返す関数を作っておくと便利 - IT戦記

    PHP では以下のように new してすぐメソッドを呼べない <?php new DateTime()->getOffset(); なので、引数をそのまま返す関数を作ってやると <?php function expr($a) { return $a; } expr(new DateTime())->getOffset(); // OK! 便利だなー おまけ 配列アクセス用のも作っておくと便利 <?php function expr($a) { return $a; } function idx($array, $i) { return $array[$i]; } echo idx(idx(expr(new DateTimeZone('Asia/Tokyo'))->getTransitions(), 0), 'abbr') . "\n"; おまけ2 無名関数をそのまま呼ぶときにも使える。 <

    PHP で引数をそのまま返す関数を作っておくと便利 - IT戦記
  • PHPでマルチスレッド(バックグラウンド処理)を実現する方法 - EC studio 技術ブログ

    PHPで長時間かかる重い処理を行うとき、 マルチスレッドで動かせたらなぁ!と思うことがよくあります。 マルチスレッド処理を行うことで、時間のかかる処理を 複数同時に並列実行でき、高速化することができます。 (特に通信処理などで遅延がある場合に有効です) PHPにはpcntl_forkというプロセスをフォーク(複製)することが できる関数がありますが、これはPHPCGIモードで 動かしている場合にのみ有効です。 通常はPHPをApacheモジュールとして動作させていることが 多いので、これが使えないケースが多々あります。 他には、system関数などでシステムコールを行い、 など & を使って実行するという方法もありますが、 これもphpCGI版として実行できなければいけません。 システムコールで呼ぶプログラムをPerlなどで 書けばいいのですが、できればPHPで全部統一したいものです。

  • すごいリロード対策 - p4lifeのメモ

    メモ, PHPPHP TIPS】 58. すごいリロード対策紹介されているのはシンプルなワンタイムトークン.単純なリロード対策であれば ticket の値は乱数でなくても良い.ここを乱数にすることで CSRF 対策も兼ねている.ただこの方法は,場合によってはフォームを正常に送信できなくなってしまう問題がある. 例えば,入力画面→入力確認画面と遷移してから別のウィンドウで入力画面→入力確認画面と遷移すると,前の入力確認画面のフォームは ticket が無効になり,フォームを送信できなくなる(複数画面同時編集ができない). 解決策としては,発行したトークンを全て記憶しておき,POST されたトークンと照合する方法がある. confirm.php session_start(); $token = sha1(uniqid(mt_rand(), true)); // トークンをセッションに追加す

  • CakePHPを使ったMVC設計のベストプラクティス - Sooey

    CakePHPを使ったMVC設計のベストプラクティス 個人的にはCakePHPはあまり好きではないのですが、CakePHP開発メンバーによるMVCデザインの記事 (CakePHP のおいしいべ方)で紹介されていたBest Practices in MVC Design with CakePHP (php|architect’s C7Y)はMVCフレームワーク利用者にとってとても有用な情報だったので、訳してみました(php|architectの方には翻訳許可を頂いています)。 この記事を読んでドメインモデルに興味を持った方は、エンタープライズ アプリケーションアーキテクチャパターン(PoEAA)やDomain-Driven Design: Tackling Complexity in the Heart of Softwareに手を出してみるのもいいかも。他に、InfoQにユーザー登録すれ

  • PHP コード最適化 Best Practices 63+ - カタコト日記

    みたいなタイトルの記事を Digg 経由で発見。チートシート代わりにと思い超訳。*1 A Software Architect PHP 最適化 ベストプラクティス! 01. static にできるメソッドは static として宣言しよう。(4倍速い) 02. echo の方が print より速い。 03. echo '文','字'; (カンマ区切り)の方が、'文'.'字' (ドット連結)より速い。 04. ループの最大値は、ループ「内」ではなく「前」にセットしておこう。 05. 大きい配列のような変数は unset() してメモリを解放しよう。 06. マジックメソッド(例: __get, __set, __autoload)は使用を避けよう。 07. require_once はハイコストなのです。 08. include や require でファイルはフルパスで指定しよう。 09

    PHP コード最適化 Best Practices 63+ - カタコト日記
  • PHPでファイルをDLさせる際のPHPコード例:phpspot開発日誌

    2008/2/22: sotarok様より、連絡がありコードを一部訂正 参考1)http://d.hatena.ne.jp/odz/20080215/1203099900 参考2) http://d.hatena.ne.jp/cocoiti/20080221#1203611811 PHPでファイルをDLさせる際のPHPコード例 通常、PHPでファイルをダウンロードさせるとすると、次のようにシンプルにかけます。<?php header('Content-Type: application/octet-stream'); readfile("dl.zip"); ?> が、これだと、ダウンロード時に、保存名がアクセスしたphpでのファイル名になってしまいます(例えば、dl.php)。 そこで次のように Content-Disposition でファイル名をブラウザに通知することで、dl.zip

  • ウノウラボ Unoh Labs: PHPで暗号化・復号化あれこれ

    GT Nitro: Car Game Drag Raceは、典型的なカーゲームではありません。これはスピード、パワー、スキル全開のカーレースゲームです。ブレーキは忘れて、これはドラッグレース、ベイビー!古典的なクラシックから未来的なビーストまで、最もクールで速い車とカーレースできます。スティックシフトをマスターし、ニトロを賢く使って競争を打ち破る必要があります。このカーレースゲームはそのリアルな物理学と素晴らしいグラフィックスであなたの心を爆発させます。これまでプレイしたことのないようなものです。 GT Nitroは、リフレックスとタイミングを試すカーレースゲームです。正しい瞬間にギアをシフトし、ガスを思い切り踏む必要があります。また、大物たちと競いつつ、車のチューニングとアップグレードも行わなければなりません。世界中で最高のドライバーと車とカーレースに挑むことになり、ドラッグレースの王冠

    ウノウラボ Unoh Labs: PHPで暗号化・復号化あれこれ
  • 実用的なPHP用の正規表現x8:phpspot開発日誌

    記事の訂正です。 (phpspotの人は正規表現について語らないほうがいいのでは)というエントリの指摘を受け、記事を修正します。 問題は、簡単な目視のチェックのみで動作確認を行わなかった点が問題ですね。 掲載した正規表現では厳密なチェックは行えない、一部の正規表現で正しく動作しないという問題点がありました。 また、「メールアドレスの正規表現」の記事修正も行っています。 メールアドレスの正規表現はきちんと書くと長くなってしまったりするので、注意文とメールが届くかどうかのチェックを促すよう記載しました。 それでも、まだ問題があるよ、という方はお手数ですが、こちらまでご連絡ください。 (追記) 正しい正規表現は、秋元さんのブログにも掲載されていますが、次のエントリを参考にするのがよいでしょう PHPでメールアドレスかどうか調べる方法 PHPでメールアドレスを確認する「正しい方法」(Linux

  • PHPでのHTTPアクセスを超簡単に行える「PEAR::HTTP_Request」:phpspot開発日誌

    PHPでのHTTPアクセスを超簡単に行える「PEAR::HTTP_Request」。 HTTP_Request は、PHPユーザの方ならご存知の方も多いと思いますが、WEB上にコピペですぐ使えるサンプルが無かったので作ってみました。 単純にHTTPリクエストを行うなら、PHPなら、file 関数や file_get_contents で1行でできてしまいます。 (php.ini にて allow_url_fopen=Onにした場合のみ) ただ、タイムアウトの秒数を設定したり、リダイレクトされた場合の処理や、HTTPリクエストする際のヘッダーなどの指定はカスタマイズ出来ません。 HTTP_Request ならそれが次のように簡単に行えます。 <?php // リクエストを行うURLの指定 $url = "http://〜"; $option = array( "timeout" => "10

  • Moony::log - PHPだけでBasic認証

    何かの拍子で使わないとも限らないのでメモ代わりに書いておく。ざっくりと流れだけ。 <?php if (!authenticate($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])) { header('WWW-Authenticate: Basic realm="title here"'); header('HTTP/1.1 401 Unauthorized'); echo 'Authentication failure.'; exit; } function authenticate($user, $password) { return ($user === VALID_USER && md5($password) === VALID_PASSWORD); } ?> authenticate関数の部分でデータベースアクセスするようにす

    Moony::log - PHPだけでBasic認証
  • PHP でファイルを読み取るための正しい方法

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    PHP でファイルを読み取るための正しい方法