PHP

strcmpで文字列比較

PHP

Fedora 11と戯れすぎてブランクが空いてしまったけど、今日からまた再開。 PHPでよく話題になる「変数の型比較」。型の違う変数を比較するとPHPがよしなに型変換してくれるのだけれど、そのルールが中々にトリッキーらしい。 ので、自衛手段として文字列比較…

FirePHP使い方メモ

PHP

まず、pearでインストール。本家からダウンロードでも可。 ;; チャンネルを追加 # pear channel-discover pear.firephp.org # pear install firephp/FirePHPCore使い方は、3種類。 1.スタティックに

PDOの注意点

PHP

こんなSQLを作成しようと思って SELECT * FROM table_name WHERE name LIKE '%hoge%'こんな感じのコードを書いた。 prepare($sql); $stmt->bindParam(1, $hoge); ところが、これを実行しても結果セットが返ってこない。 調べてみると、「LIKEの'%'は変数の中…

parse_ini_fileの第2引数

PHP

[hoge] name = "user" pass = "password" [fuga] url = "http://example.com" mail = someone@example.comこんなiniファイルを作っても、 ;; デフォルトはFALSEなのです $params = parse_ini_file('file.ini', TRUE);としないと、多次元配列として読み込んで…

MediaWikiメモ

PHP

;; いわゆるItalic ''string'' ;; いわゆるBold '''string''' ;; ItalicでBold '''''string''''' ;; 内部リンク [[target|string]] ;; h2〜 == headline == === headline === ==== headline ==== ===== headline ===== ====== headline ====== ;; ul * A * B…

MediaWikiで設定を編集する

PHP

オレオレシェルコマンド辞典作成に向けて、以前インストールしていたMediaWikiをちゃんと使えるようにしてみた。 設定を変更するには、includes/DefaultSettings.phpではなくて、LocalSettings.phpに追記していくらしい。 という事で、以下を指定。 ;; タイ…

演算子[&&]と[||]の意味

今までの理解はこんな感じ ;; AもBも真なら「真」 A && B ;; AかBが真なら「真」 A || B結局コッソリ勉強中のシェルスクリプトで理解したのはこんな感じ ;; Aが真ならBを実行 A && B ;; Aが偽ならBを実行 A || B結局同じ事かもしれないけど、実際の処理とい…

PEAR関連コマンドメモ

PHP

;; PACKAGE_NAMEをインストール # pear install -a PACKAGE_NAME ;; PACKAGE_NAMEをアップグレード # pear upgrade -a PACKAGE_NAME ;; インストール済みパッケージの一覧 # pear list ;; アップグレードはあるかな?? # pear list-upgradesパッケージの一覧…

Zend Framework1.8がリリース

PHP

フレームワークとしては使ってない(興味は津々)けど、各コンポーネントをつまみ食いしてるZend Frameworkの1.8がリリースされたみたい。Zend Framework 1.8個人的には、CurlとかCodeGeneratorが気になるところ。 PEARみたいに、1ヶ所にまとめてパスを通して…

PHP経由での「SET NAMES」はよろしくない

散々言及されてるみたいだけど、PHPでmysql_query('SET NAMES sjis')とか発行すると、SQLインジェクション脆弱(ぜいじゃく)性を作り込む危険性があるらしい。コンソールからの利用は問題無し。 幸いにも未だ使った事は無いので、今後そういうケースに遭遇し…

カレントディレクトリのパスを取得

PHP

これでOK。 取得出来るディレクトリの最後に「/(スラッシュ)」は付かないので注意。 CodeIgniterに甘えないスキルも身につけようと、今時スクラッチで問い合わせフォームを作成中。 勉強になるけど、拡張性とか汎用性とか考慮しだすと、いつまで経っても完…

Fedora10でphpMyAdminを動かす

開発環境構築メモ。 本家サイトで最新版をダウンロードして、DocRoot下に解凍・設置。 その後、config.inc.phpを作成すればOK。 ;; /var/www/html/pmaにしてみた $ cd /var/www/pma ;; 設定ファイルを流用 $ cp config.sample.inc.php config.inc.php ;; 適…

switch文での比較時の注意点

PHP

注意: switch/case が行うのは、緩やかな比較であることに注意しましょう。 公式マニュアルより。 厳密に比較したい場合はif 〜 elseif 〜 elseを使え、という事かな?? いや、そもそもswitch文で厳密な比較をしようとする処理自体がダメダメ?? どちらにせよ…

ctype_digit()関数の覚え書き

PHP

bool ctype_digit (string $text)与えられた文字列 text のすべての文字が数字であるかどうかを調べます。 最近知った便利な関数。 引数すべてが10進数字ならTRUE、じゃなきゃFALSEを返してくれる。 早速ゴリゴリ使おうと思ったら、マニュアルに注意書き。 P…

CLIでのPHPオプション

特定のメールアドレスに来たメールをパイプで渡して、解析した内容をDBに放り込むスクリプトを書いた。 テストでメール送信してみると、DB登録処理まで行われているにも関わらず、Mailer-daemonさんから配達失敗の通知が届く。 標準出力にレスポンスヘッダが…

ページャーの実装

/* * 取り敢えずこれだけ設定しておけば * 動くでせう */ $this->load->library('pagination'); // ページャーが生成するURL $config['base_url'] = 'http://example.com/class/method/'; // ページあたりの表示数 $config['per_page'] = $num; // データ総…

クラスの静的メンバへのアクセス

PHP

URLのクエリ文字列を生成する

PHP

PHPマニュアルより string http_build_query (array $formdata [,string $numeric_prefix [,string $arg_separator ]])与えられた連想配列(もしくは添字配列)からURLエンコードされたクエリ文字列を生成します。 APIを多用したマッシュアップサイトを構築中…

printfとsprintfの違い

PHP

printf関数 int printf(string $format [,mixed $args [, mixed $...] ]) ※整形された文字列の長さを返す sprintf関数 string sprintf(string $format [,mixed $args [,mixed $...] ]) ※整形された文字列を返す 書式は一緒だけど返り値が違う。 こういう細か…

var_dump()で複数の変数をダンプ

PHP

公式マニュアルより void var_dump ( mixed $expression [, mixed $expression [, $... ]] ) カンマで区切れば複数の引数が指定可能。 しょっちゅう使ってるのに初めて知った。 マニュアルにもっとしっかり目を通さなくちゃ・・・(・x・ ).o0○

ユーザーのホスト名を取得

string gethostbyaddr(string $ip_address) 引数にIPアドレスを指定すれば、PHPが逆引きしてくれる。 Apacheのhttpd.confでHostnameLookupsがon(デフォルトはoff)になってたらもっとカンタン。 echo $_SERVER['REMOTE_HOST'];これでホスト名が表示される。 …

正規表現の量指定子

「*」・・・0回以上の繰り返しにマッチ 「?」・・・0回または1回の出現にマッチ 「+」・・・1回以上の出現にマッチこの3つでいつも混乱するのでメモ。 正規表現は超便利だけど処理コストが高いらしい。 いざという時の特効薬みたいな感じ…かな??(・x・ ).o0○

PHP5.2.9からarray_unique関数の挙動が変更

CodeIgniterのMLで流れてきた以下のブログで知った。 array_unique関数がPHP5.2.9から後方互換性を失いました - hnwの日記 CodeIgniterではActive Recordのキャッシュ時と、Trackback用のライブラリ内で使ってるみたいで、どっちも利用してないし関係無いや!…

環境変数PATH_INFOとは?

PHP

「PATH_INFO」って何ですか?って聞かれたら、ハッキリ答えられない自分に気づいた。 という事は、ボンヤリとした理解しか出来ていないという事(-_-;ウーン で、ちゃんと理解すべくあれこれ検索してみたけれど「PATH_INFO」そのものについて解説されているサイ…

CodeIgniterで$_GETパラメータを取得する

CodeIgniterは、セキュリティの観点から$_GETがデフォルトでは利用出来ない。キレイに消去されてしまう。 いざ$_GETを使いたくなった時にどうすべきか?2つほど方法がある。 方法その1:$_REQUESTから取得http://hogehoge.com/class/?key=fugaというURLに対…

CodeIgniterでモデル・ライブラリに別名をつける

モデルの場合は第2引数で指定 $this->load->model('model_hoge', 'hoge'); $this->hoge->some_method();ライブラリの場合は第3引数で指定 $this->load->library('Fugafuga', '', 'fuga'); $this->fuga->some_method();モデルはファイル名に「model_」という…

Shift-Jisの代表的な5C文字

文字 読み ー ダッシュ ソ そ[カタカナ] 噂 うわさ 圭 けい 構 こう・かま[える] 蚕 かいこ 十 10[漢数字] 申 しん・もう[す] 貼 は[る] 能 のう 表 ひょう・あらわ[す] 暴 ぼう・あば[れる] 予 よ・あらかじ[め] Wikipediaにはもっといっぱい載ってたけど、…

PHPで標準入力を受け取る

元ネタはコチラ…PHPでscanfするには? これで変数$lineに標準入力からの文字列が入る。 同じLLでも、rubyならgets一行で済むらしい。こういう、言語それぞれの得手不得手は面白い。 PHPの強みはやっぱりWebだなぁ…(・x・ ).o0○

CodeIgniterの1.7.1がリリース

PHPのステキなフレームワーク「CodeIgniter」の最新版が出てた。 結構危険なバグの修正を含んでるそうなので、早速入れ替えなきゃ。 アタヽ(´Д`ヽ ミ ノ´Д`)ノフタhttp://codeigniter.com/news/codeigniter_1.7.1_released/