PHPの開発効率を上げる10個の関数

「追記とか」にコメントの返答や追記をしてますので合わせてどうぞ。
かれこれ3年くらいPHPをやっているので、せっかくなので10個の便利な関数を並べてみました。
作業効率がかなりアップするので、これからPHPをやってみようかなぁって思う方は知っておくと便利だと思います。

変数、配列の内容をキレイに表示する関数「d」

変数や配列の内容をHTML構文でキレイに表示してくれます。
しかも、var_dumpと書くとタイピングが大変なので「d($hoge)」として簡単に記述。
これだけでも作業効率8倍

function d() {
    echo '<pre style="background:#fff;color:#333;border:1px solid #ccc;margin:2px;padding:4px;font-family:monospace;font-size:12px">';
    foreach (func_get_args() as $v) var_dump($v);
    echo '</pre>';
}

簡単にhtmlのエスケープやsqlのエスケープをしてくれる関数「h」,「e」

簡単にhtmlのエスケープやsqlのエスケープをしてくれる関数「h」,「e」。
しかも配列にも対応しているので、まとめて処理してくれます。
htmlspecialcharsはとても長い関数名なので「h」として利用すると16倍早く書けます(笑)。

$str_h = h( "<a>hoge</a>");
$str_e = e( "select * from hoge where 1 -- '' " );
function h($str){
    if(is_array($str)){
        return array_map( "h",$str );
    }else{
        return htmlspecialchars($str,ENT_QUOTES);
    }
}
function e($str){
    if(is_array($str)){
        return array_map( "e" , $str );
    }else{
        return mysql_real_escape_string( $str );
    }
}

ファイルの読み書きをそれぞれ1行で。

ファイルの読み書きをそれぞれ1行でできる関数「file_get_contents」,「file_put_contents」。

//読み込み
$file = file_get_contents( "http://yourfile/" );
$file .= "文字追加";
//書き出し
file_put_contents( "output.txt" , $file);

c言語でおなじみの「fopen」は「fgetcsv」などcsvファイルを読み込むときや特殊な時に使うといいかも?

xmlファイルを配列に変換してくれるライブラリ「XML/Unserializer.php」

PHPで外部APIを使用すると何かとXMLの解析が多いのでライブラリを使用して配列に変換できます。
PEARライブラリのXML_Serializerが必要

require_once 'XML/Unserializer.php';
$Unserializer =& new XML_Unserializer(
                     array('parseAttributes' => true,
                           'targetEncoding'  => 'utf-8'
                     )
                 );
$file = file_get_contents( "http://hoge.xml" );
$status = $Unserializer->unserialize( $file);
$xml = $Unserializer->getUnserializedData();
var_dump( $xml );

ちなみにsimplexml_load_fileでもOK。
ちょっとクセがあるけど。

$xml = simplexml_load_file( "http://hoge.xml" );
var_dump( $xml );

ネームスペースの問題が面倒な場合は

$xml = file_get_contents( "http://hoge.xml" );
$xml = str_replace( ":" , "_" , $xml );
$xml_arr = simplexml_load_string( $xml );

としてネームスペースを無効にして解析します。
ただし、なんちゃって解析なので注意。

メール送信を1行で行う「mb_send_mail」

メール送信を1行で行う「mb_send_mail」関数。
日本語マルチバイトにも対応しているのが特徴。

mb_send_mail( "[email protected]" , "タイトル" , "内容" , "From: [email protected]" );

ちなみに添付メールには対応していないので、自前で作る。
HTMLメールには簡単に対応可能。

mb_send_mail( "[email protected]" ,
              "タイトル" ,
              "<html>内容</html>" ,
              "From: [email protected]\r\nContent-Type: text/html" );

携帯コンテンツ向けに全角カナを半角で表示「mb_convert_kana」

携帯版の場合は半角カナを表示し、PC版のときは全角カナを表示することが簡単にできる。

$ZENKAKU = mb_convert_kana( "半角カナに変換したい!" , "k" );

文字コードを一括でできるmb_convert_encodingも便利。

//sjis -> utf-8 に変換
$html = mb_convert_encoding($html, 'UTF-8', 'SJIS');

絵文字削除にも使える

mb_substitute_character('none');
$html = mb_convert_encoding($html, 'SJIS', 'SJIS');

HTMLタグをSQL文で抽出する「htmsql」

HTMLタグをSQL文で抽出する「htmsql」
正規表現を勉強する暇がなく、でもHTMLを解析したい方向け。
htmlSQL

$wsql = new htmlsql();
$wsql->connect('string', $file);
$wsql->query('SELECT * FROM div WHERE $class="header"');
foreach( $wsql->fetch_array() as $row ){
    var_dump( $row );
}

住所から緯度経度に変換する「address2gps」

GoogleAPIを利用して住所を緯度経度に変換
HTTP リクエスト経由のジオコーディング

$xml = address2gps( "東京都千代田区" );
var_dump( $xml );
function address2gps( $address ){
    $APIKEY  = "Google API KEY";
    $url = "http://maps.google.co.jp/maps/geo?key={$APIKEY}&q={$address}&output=xml&ie=UTF-8";
    $file = file_get_contents( $url );
    return $file;
}

googlechart

グラフ作成。
Google Charts APIをPHPから簡単に操作できるようにしたライブラリ『googChart』
jpgraphでも作成可能。

URLやメールアドレスの自動リンク「convert_link」

文字列を解析して、自動でURLリンクやメールアドレスのリンクをしてくれる。

function convert_link( $val ){
    //タグの除去
    $val = strip_tags( $val );
    //自動リンク
    $val = mbereg_replace("(https?|ftp|news)"."(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","[<A href=\"\\1\\2\" target=\"_blank\">URL</A>]", $val);
    $val = mbereg_replace("([0-9A-Za-z\.\/\~\-\+\:\;\?\=\&\%\#\_]+@[-0-9A-Za-z\.\/\~\-\+\:\;\?\=\&\%\#\_]+)","[<A href=\"mailto:\\1\">MAIL</A>]", $val);
    //改行をbrタグに変換
    $val = nl2br( $val );
    return $val;
}

以上です。PHPラクで便利だなぁって思ってくれたらうれしいです。
PHPには便利なライブラリや関数があるので、まずは何ができるかを調べた上でプログラムを書くといいかなぁって思います。