[PHPStorm]タグの属性や,関数のヘルプを素早く調べる方法
PHPStormでは、エディタで検索したいモノ(タグの属性、関数のヘルプ)にカーソルがある状態でCtrl-Qを押すと、ヘルプウィンドウが表示されます。 この機能を使用すると、素早く検索が出来るのでコーディングが捗ります。 例えばhtmlタグのid属性を指定するとことでCtrl-Qを押すと… idについてのヘルプが表示されます。 自作のJavaScriptも、PHPDoc(JavaDoc)形式でコメントを書いておくとCtrl-Qで関数ヘルプが表示されます。 @paramとかをちゃんと書いておけば引数の説明も表示されるので便利です。 Ctrl-Pを押すと、仮引数の名前を出してくれます。…
続きを読む
[PHPStorm]Zen-codingを使う
PHPStormでは、デフォルトでZen codingが使用可能です。 使い方は簡単で、Zen coding表記を記述し、カーソルが末尾にある状態でTabキーを押すと… htmlタグに展開されます。 デフォルトではTabキーでZen-codingの展開が行われます。 このショートカットキーは、設定でSpaceやEnterに変更することも可能です。 設定を変更するには、File->Settingを選択します。 表示された設定画面の左側一覧より、IDE Setting -> Editor -> Smart Keysを選択します。 Enable Zen Codingにチェックを入れ、&#…
続きを読む
[PHPStorm]エディタをvi(Vim)キーバインドにする
PHPStormの内蔵エディタは、IdeaVimプラグインをインストールする事でキーバインドをVim風に変更することが可能です。 IdeaVimプラグインのインストール方法 メニューより、File->Settingsを選択します。 設定画面の左側から,IDE Settings -> Pluginsを選択します。 右側に表示されたBrowse repositoriesボタンをクリックします。 一覧からIdeaVimを選択します。 項目を右クリックしてDownload and Installを選択します。 インストールしてよいですか?の確認ダイアログが表示されるので、Yesをクリックします。 設定…
続きを読む
[PHP]ハッシュの入った配列を,ハッシュ値をキーにソートする
PHPで、例えば以下の様に沢山のハッシュテーブルが配列に格納されていたとします。 DBのテーブルとかをイメージすると分かりやすいかもしれません。 $dataList = array(); $dataList[] = array( "itemcode" => "10001", "itemname" => "みかん" ); $dataList[] = array( "itemcode" => "100…
続きを読む
[PHP]file_get_contenst()で複数サイトのhtmlを非同期・高速に取得する
PHPでは、file_get_contenst()関数にURLを指定する事で、他のサイトのhtmlテキストを取得できます。 1つのサイトだけを取得する場合はこれでよいのですが、大量のサイトからデータを取得する場合、 1サイトつづ順番に関数を呼んでいたら非常に時間が掛かります。 このような場合はcURLモジュールに有るcurl_multi_getcontent()関数を使用すると、複数サイトの情報を非同期で同時に取得出来ます。 ですが、curl_multi_getcontent()は、リソースの確保・開放処理が必要で、扱いがちょっと煩雑です。 この為、今回はfile_get_contenst()…
続きを読む
[PHP]配列内から、index指定で要素を削除する方法
PHPで配列から要素を削除するには、array_shift(),array_pop(),unset()関数を使用します。 それぞれ配列の「先頭、末尾、index指定」で要素を削除することが出来ます。 index指定というのは、配列の要素番号を指定するという意味です。 それぞれの関数は、以下のサンプルコードで振る舞いを確認できます。 // 先頭を削除 echo "case1—-\n"; $dataList = array( "d1", "d2", "d3", "d4", "d…
続きを読む
[PHP]goto文を使用すると「syntax error, unexpected T_STRING」エラーが発生
PHPでgoto文を使用したプログラムを書いていたのですが、手元の開発環境だと動作するのに、サーバにアップロードすると以下のエラーが発生するという問題が発生しました。 Parse error: syntax error, unexpected T_STRING in …Parse error: syntax error, unexpected T_STRING in … 手元の環境だと動くという事は、環境の問題なので、まずはphpinfo()でバージョンを確認してみます。 開発環境 PHP Version 5.3.1 System Windows NT 5.1 build 2600 (…
続きを読む
[PHP]SimpleXMLでxmlツリーを作成し、綺麗に整形して出力する
PHPでSimpleXMLを使用してxmlの作成を行います。 プログラム <?php $rootNode = new SimpleXMLElement( "<?xml version=’1.0′ encoding=’SHIFT_JIS’ standalone=’yes’?><items></items>" ); // ノードの追加 $itemNode = $rootNode->addChild(’item’); $itemNode->addChild( ‘itemCo…
続きを読む
[PHP]改行なしスペース(&nbsp;、0xA0)を、普通の空白(0x20)に置換する
PHPで改行無しのスペース(&nbsp;)は文字コード0xA0で表現されます。 この改行無しスペースを普通のスペースに置換するには、以下のコードを使用します。 $str = trim( $str, chr(0xC2).chr(0xA0) );$str = trim( $str, chr(0xC2).chr(0xA0) ); 正規表現を使用する場合は以下のパターンになります。 $str = preg_replace( "/^\xC2\xA0/", "", $str );$str = preg_…
続きを読む
[PHP]DOMとSimpleXMLの相互変換
PHPではバージョン5.0以降でSimpleXML拡張モジュールというものが追加されました。 SimpleXMLを使用すると、これまでのDOMオブジェクトに比べてXMLの操作が容易になります。 ですが、古いバージョンを元にしたライブラリではDOMベースのプログラムも少なくありません。 そこで今回はDOMとSimpleXMLの相互変換関数を確認しておきます。 SimpleXML -> DOM SimpleXMLからDOMの変換はdom_import_simplexml関数を使用します。 関数仕様 DOMElement dom_import_simplexml( SimpleXMLElement …
続きを読む
[PHP]Eclipse PDTで,関数の検索&関数仕様を検索する方法
PHPのプログラムをEclipse PDT環境で開発している場合に、関数の検索と、関数仕様を調べる方法です。 ウィンドウ->ビューの表示->PHP関数を選択します。 試しにfread()関数を検索してみます。 PHP関数の検索枠が出てくるので、関数名を途中まで入力すると候補が下に表示されます。 選択肢にはmysqli_resultとかも出ていますが、これはクラスのメソッドとして”fre”で始まるものがあるからです。”+”をクリックして展開すると、ヒットしたメソッドが表示されます。 ワイルドカードも使えるので、”f*ad”と…
続きを読む
[PHP]文字列リテラルを、シングルクォートとダブルクォートで括った時の速度差
PHPでは文字列リテラルを書くとき、文字列をシングルクォート、又は、ダブルクォートで括ることが出来ます。 両者の違いは、”{}”で書いた変数の展開を行うかどうかと、エスケープシーケンスを処理するかです。 <?php $a = 10; echo "hello world:{$a}\n"; echo ‘hello world:{$a}\n’;<?php $a = 10; echo "hello world:{$a}\n"; echo ‘hello world:{$a}\n’; 実行結果 C:\>php test.ph…
続きを読む
[PHP]標準エラー出力、標準出力に文字列を出力する
PHPで標準エラー出力に文字を出すには、ファイル”php://stdout”をオープンすればOKです。 <?php $stdout= fopen( ‘php://stdout’, ‘w’ ); fwrite( $stdout, "hello world to stdout\n" ); $stderr = fopen( ‘php://stderr’, ‘w’ ); fwrite( $stderr, "hello world to stderr\n" )…
続きを読む
PHPでAmazonのMWSを使用して,マケプレの出品情報を取得する
PHPでASINを指定して、Amazon.co.jpのサイトより、マーケットプレースに出品されている商品の情報を取得するサンプルのプログラムです。 データの取得にはAmazon Marketplace WebService(MWS)を使用しています。 Amazonから提供されているクライアントライブラリはサンプルコードが添付されているのですが、 内容が冗長で分かり辛いので書き直しました。 実行手順: 下記のサイトより、クライアントライブラリをダウンロードします。(タイトル右のボタンをクリック) 商品API セクション クライアントライブラリ – PHP – バージョン …
続きを読む
[PHP]twitter APIを使用して、検索した結果を出力する
twitterに書き込まれたツイートを、PHPで検索して出力させるプログラムです。 $keyword = urlencode( ‘キーワード’ ); //——————————– // twitter APIを使用して検索を行う //——————————– $result = file_get_contents( ‘http://search.twitter.com/search.atom?q=’. $keyword ); $xml = new SimpleXMLEl…
続きを読む
[PHP]年月日の文字が入った日付文字列を,YYYYMMDDに変換する(2012年1月31日 -> 20120131)
PHPで、例えば「2012年1月31日」といった、書式編集されている日付文字列を、 「20120131」のようなYYYYMMDD形式に変換します。。 function normalizeDate( $inStr ) { // 年月日の各パーツを分割する preg_match( "/([0-9]*)年([0-9]*)月([0-9]*)日/", $inStr, $data ); if ( Count( $data ) != 4 ) { return $inStr; } /…
続きを読む
[PHP]php5.3でDateTimeクラスに追加されたメソッドと同等の事を5.2で行う
PHP5.2に対して、PHP5.3ではDateTimeクラスに対してメソッドが追加されているため、5.3向けに書かれたコードを5.2の環境で動作させようとすると問題が発生する事があります。 このような場合の対処法を幾つか確認したのでメモしておきます。 //——————————- // 現在の時刻を取得 //——————————- $sysdate = new DateTime(); //——————————- // 現在時刻を文字列…
続きを読む
[PHP]メソッドの呼び出し元関数名を取得する
debug_backtrace()関数を使用することで、スタックトレースの情報から取得可能です。 function showCallerFunc() { $dbg = debug_backtrace(); echo( $dbg[1][’function’] ); }function showCallerFunc() { $dbg = debug_backtrace(); echo( $dbg[1][‘function’] ); } メソッド内で、呼び元が誰かを知る必要は通常ありませんが、デバッグ…
続きを読む
[PHP]htmlからxmlに変換する関数群 : html2xml
phpでスクレイピングしたい時、htmlからxmlへの変換方法をいつも調べるので、 備忘録代わりに変換関数を作成しました。 この手の変換は、作るプログラムによって元ネタがurlだったりhtml文字列だったりします。 また変換先もxmlテキストが欲しいときやDOMDocumentが欲しいなど様々です。 という訳で、冗長ですが全パターン用意しました。 変換パターンによっては、中身がPHPの関数1行だけというラッパーになっている場合も有りますが、網羅しておいたほうが一覧性が良いかと思い、あえて用意しています。 変換可能なパターンは以下通りです。 url -> html文字列 url ->…
続きを読む
[PHP]mb_str_split: 指定した文字数で,文字列を分割する(全角文字対応版)
指定された文字列を指定した文字数単位で分割し、配列として返す関数を作成しました。 ここでいう「文字数」はbyte数ではないので注意してください。 例えば”あいうえお”は、10ではなく5とカウントします。 function mb_str_split( $inStr, $length ) { $outArray = array(); // パラメータチェック if ( $length < 1 ) { return FALSE; } for ( $offse…
続きを読む