アーカイブ

2007 年 8 月 のアーカイブ

ISBN

2007 年 8 月 15 日 コメントはありません

コードなにがし::ISBN10桁13桁変換
そいや前それっぽいコード書いた記憶があったので探してみたところ発見。
ループを使いたくなくてcreate_function使ったりしてるあたり中二病


/**
 * @see http://seclan.dll.jp/ccisbn.htm
 */

    /**
     * assert(checkISBN('4575831778'))
     */
    function checkISBN($code)
    {
        $code = str_replace('-', '', $code);
        if (!preg_match('/^\d{9}[0-9X]$/', $code)) {
            // japan /^4\d{8}[0-9X]$/
            return false;
        }
        $code_array = str_split(substr($code, 0, 9));
        array_walk($code_array, create_function('&$v,$k', '$v *= 10 - $k;'));
        $check_digit = 11 - array_sum($code_array) % 11;
        if ($code{9} != (($check_digit == 10)? 'X': $check_digit)) {
            return false;
        }
        return true;
    }

    /**
     * assert(checkEAN('978-4575831771'))
     */
    function checkEAN($code)
    {
        $code = str_replace('-', '', $code);
        if (!preg_match('/^\d{13}$/', $code)) {
            // japan /^9784\d{8}[0-9A-Z]$/
            return false;
        }
        $code_array = str_split(substr($code, 0, 12));
        array_walk($code_array, create_function('&$v,$k', '$v *= (($k + 1) % 2)? 1: 3;'));
        $check_digit = 10 - array_sum($code_array) % 10;
        if ($code{12} != $check_digit) {
            return false;
        }
        return true;
    } 

カテゴリー: 日記 タグ:

今日のチェキ 2007-08-14

2007 年 8 月 14 日 コメントはありません
カテゴリー: 日記 タグ:

SimpleXMLの使い方

2007 年 8 月 13 日 コメントはありません

SimpleXMLの使い方メモ。
CDATAなんてのはパースできないので諦める。

対象、自分のはてぶ


<?php
$xml = @simplexml_load_file('http://b.hatena.ne.jp/cockok/atomfeed'); 

すべてのタイトルを表示する


foreach ($xml->entry as $entry) {
    var_dump($entry->title);
} 

すべてのタイトルを表示する(XPath)


$xml->registerXPathNamespace('atom', 'http://purl.org/atom/ns#');
foreach($xml->xpath('//atom:title') as $title) {
    var_dump($title);
} 

すべてのタグを表示する


foreach ($xml->entry as $entry) {
    foreach ($entry->children('http://purl.org/dc/elements/1.1/') as $subject) {
        var_dump($subject);
    }
} 

すべてのタグを表示する(XPath)


foreach($xml->xpath('//dc:subject') as $subject) {
    var_dump($subject);
} 

すべてのlink=alternateを表示(XPath)


$xml->registerXPathNamespace('atom', 'http://purl.org/atom/ns#');
foreach($xml->xpath('//atom:link[@rel="alternate"]') as $link) {
    var_dump($link);
} 

エントリーごとにtitleとlink=alternateのhrefを表示


foreach ($xml->entry as $entry) {
    $entry->registerXPathNamespace('atom', 'http://purl.org/atom/ns#');
    var_dump($entry->title);
    foreach ($entry->xpath('atom:link[@rel="alternate"]') as $link) {
        var_dump($link['href']);
    }
} 

カテゴリー: 日記 タグ:

今日のチェキ 2007-08-13

2007 年 8 月 13 日 コメントはありません
カテゴリー: 日記 タグ:

今日のチェキ 2007-08-12

2007 年 8 月 12 日 コメントはありません
カテゴリー: 日記 タグ:

今日のチェキ 2007-08-11

2007 年 8 月 11 日 コメントはありません
カテゴリー: 日記 タグ:

今日のチェキ 2007-08-06

2007 年 8 月 11 日 コメントはありません
カテゴリー: 日記 タグ:

今日のチェキ 2007-08-10

2007 年 8 月 10 日 コメントはありません
カテゴリー: 日記 タグ:

今日のチェキ 2007-08-09

2007 年 8 月 9 日 コメントはありません
カテゴリー: 日記 タグ:

PHPのもうひとつのマルチバイトモジュールiconv

2007 年 8 月 8 日 コメントはありません

標準関数として組み込まれてるiconv。
WindowsはPHP5.0から組み込まれてて、他のOSはiconvライブラリを利用。
環境によって利用できるエンコーディングが違うとか問題ありそうですが、変換に関しては問題がないようです。

mbstringもそうですが、案にsjisとか指定するのやめましょうよそろそろ。
sjis → cp932、windows-31j、sjis-win(mbstring)

Windows PHP5.2.3


<?php
    $str = "あ表Ⅵ①㍉";
    $str = iconv('cp932', 'utf-8', $str);
    $str = iconv('utf-8', 'cp932', $str);
    echo $str; 

[追記]Nucleus3.3にアップデートした際にデフォルトファイルになってたんだけど見事にEUC-JPでした。
xml-rss2.php Line48


$feed = mb_convert_encoding($feed, "UTF-8", "EUC-JP");
↓
$feed = mb_convert_encoding($feed, "UTF-8", "eucJP-win"); 

カテゴリー: 日記 タグ: