忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

先ごろからかなりしつこく機能追加をつづけている所有音源データベースのコードをのちのち見かえして迷子にならないためのメモ、およびそこから見えてくる「やらなきゃね」リスト。はっきり言っておれ以外の人には何ら有用性のないものなので、読む価値なしです。

まず、1作品についての参加アーティストが1人もしくは1組ではない場合、あるいは、別の名でふつうは通っている人が変名で作品をリリースしている場合の処理。つまり、たとえば、FarbenはJan Jelinekの変名ということで、FarbenをサーチしたときはJan Jelinekの名も併記し、かつその名をクリックすると今度はJan Jelinek名義で登録されている音盤が表示されるようにしたいし、また、DACMはPITAとツジコノリコのコンビ名ということを明示し、それらの名のおのおのをクリックすると、それらの名でリリースされている音盤が表示されるようにしたい。

これは、実装するにそれほどむづかしいことではなく、ようは、ある書式を定めたのち、それらを正規表現によって分割すればよい。具体的には、「A1 (A2/A3)」というような書式で、A1という名義はA2とA3というアーティストによるコンビ名である、ということを表すとする。すると課題は、まずこれを「A1」と「A2/A3」の2つに分けたのち、後者のカッコ内を「/」でスプリットすればよい、ということになる。具体的には、

1)「A1 (A2/A3)」を「A1」と「A2/A3」に分ける

 ''eregi("(.*)((.*))"), $artist, $split)''
($artist="A1 (A2/A3)"とすると、配列変数$splitの[1]と[2]に「A1」と「A2/A3」がそれぞれ格納される。このままだと$splite[1]には半角スペース付きのA1が格納されているので、それをtrimするなり何なりするのを忘れずに)

2) 「A2/A3」を「A2」と「A3」に分ける
 ''$split=explode("/", $artist)''
($artist="A2/A3"とすると、配列変数$splitの[0]と[1]にそれぞれ「A2」と「A3」がそれぞれ格納される)

ということになる。いまeregiとexplodeの2段がまえでスプリットしているが、やりようによってはeregi一本でいけるかもしれない(ただ、ここでのように、ワンキーでの分割の場合、explodeのほうが高速、ということをどこかで読んだ覚えがある)。ただ、この方途、というか、この考えに沿ってべたで書き下ろしたコードは、かなりな「スパゲティ」度合いを示しており、それの可読性を高めることが今後の課題。

つぎに、たとえばWinterkälteのように、名義にアクセント記号を含む場合の処理。これは最初、生データベースにアクセント記号付きの文字は埋め込めないと思いこんでいたので実体参照で、つまり右のWinterkälteの場合だと「winterkälte」というように表記していたのだが、データベースの文字コードをEUC(-JP)にしている場合、アクセント記号付きの文字もそのまま埋め込めることに気づいた。となると問題は、1) こうしたアーティスト名をDiscogsに受けわたすときの処理、具体的には、文字コードをEUC(-JP)からUTF-8に変えることと、2) 生データをアクセント記号付きで作っている場合、検索語にアクセント抜きのものを指定すると想定された検索結果が返ってこない、具体的には、たとえば、前述のWinterkälteを検索しようと「winterkalte」と検索語指定してもWinterkälteで登録されているデータは引っかからないのでそれをどうにかする、という2点になる。

前者の文字コード変換はmb_convert_encoding($target, "UTF-8", "EUC-JP")で一発解決なのでどうでもいいとして、問題だったのは後者で、色々と考えたすえけっきょく、検索専用の文字列をデータに併記することにした。具体的にはWinterkälteの場合、「winterkälte{winterkalte}」というふうに「{}」内に検索専用のアクセント記号なしの文字列も埋め込んでおき、表示するときはeregi_replace("{.*}", "", $target, $result)で「{...}」の部分を除去する、という塩梅。

PR
この記事にコメントする
お名前
メールアドレス
URL
コメント
この記事へのトラックバック
この記事にトラックバックする:
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
最新コメント
最新トラックバック
メール
ブログ作成者(はやし)に直接訴えたいことがある、という場合は、下のアドレスにメールをどうぞ。

thayashi#ucalgary.ca
(#を@に置換してください)

ブログ内検索
Google
WWW を検索 このブログ内を検索

はやしのブログ内で紹介された
 書籍の検索はこちら
 音盤の検索はこちら
ランダムおすすめ
(忍者ブログに引越してから、うまくうごかなくなってしまいました。いつか、直します)
Randombook
このブログで紹介したことのある本をランダム表示。
Randomusic
このブログで紹介したことのある音をランダム表示。
自分がらみのリンク
はやしのブログ書籍一覧
このブログで言及された書籍の一覧。
はやしのブログ音盤一覧
このブログで言及された音盤の一覧。
最近のおすすめ本
最近のおすすめ音

Copyright © [ はやしのブログ ]
No right reserved except those which belong to someone else.
Special Template : 忍者ブログ de テンプレート and ブログアクセスアップ
Special Thanks : 忍者ブログ
Commercial message : [PR]