JavaScriptで文字列を空白とダブルクォーテーションで分割

var str = ‘iphone android “firefox os”’ という文字列が、
配列で分割されて var arr = [“iphone”, “android”, “firefox os”]
みたいになる関数。

function parse(text/*string*/){
  var tokenizer=new RegExp('[  ]|[^  "][^  ]*|"(?:[^"]|"")*"','g');
  var field=0,data=[''];
  text.replace(tokenizer,function(token){
    switch(token){
      case ' ':
      case ' ':
        data[++field]='';
        break;
      default:
        data[field]=(token.charAt(0)!='"')?token:token.slice(1,-1).replace(/""/g,'"');
    }
  });
  return data;
}

PHPでHTMLを解析する

作業効率化のツールを作る時なんか何かと便利。
PHP Simple HTML DOM Parser を使うと、PHPから読み込んだHTMLのソースがパースできるぞ。
早速、simple_html_dom.php をダウンロードして実証。

include( 'simple_html_dom.php' );

$src = file_get_contents( "http://hoge/" );
// ↓ HTMLの文字コードによって必要
// $src = mb_convert_encoding( $src, "UTF-8", "SJIS" );
$html = str_get_html( $src );
$datas = $html->find( 'table', 0 ); // 最初のテーブルタグを取得

こんな感じで、find を使って jQuery みたいにタグを拾える。

参考:PHP Simple HTML DOM Parser

wp_enqueue_script でも defer が使えるようにする

WordPress の Tips。

wp_enqueue_script でも defer が使えるようにするには、clean_url で js が付くURLを書き換えちゃえば良い。
jQueryも非同期に読み込んじゃうと動かないので、そこだけフィルタリングしてる。

function add_defer_to_enqueue_script( $url ) {
    if ( FALSE === strpos( $url, '.js' ) ) return $url;
    if ( strpos( $url, 'jquery.js' ) ) return $url;
    return "$url' defer='defer";
}
add_filter( 'clean_url', 'add_defer_to_enqueue_script', 11, 1 );

参考:How to add defer=“defer” tag in plugin javascripts?

Facebook SDK for AS3 での不穏な JSON の警告

AS3用の Facebook SDK を使ってたら、"The method FB.JSON.parse is not officially supported by Facebook and access to it will soon be removed.“ というに不穏な警告がブラウザのコンソールから出てたけど、どうやら将来 FB.JSON.parse と FB.JSON.stringify が使えなくなる可能性があるみたい。 この警告を消すためには、JSON をパースしてる箇所を修正する必要があります。

参考:Fixing FB graph api for as3