間に合わせで作った名もなきスニペット。この機能限定ですぐ欲しかったから作ったけれど、間違いなく再発明だと思う。
機能:
csvのようなデリミタ込みのデータ文字列、デリミタ、クラス名を与えて、HTMLのリストを生成する。
インストール:
スニペット新規作成で
- 名前:xsv2list
- スニペットコード:
<?php /* # Name: xsv2list # Version: 0.1 # Author: psycot as TO-SHI-O # Date: May 4, 2010 # Using: [[xsv2list? &xsv=`some<del>vars<del>string` &del=`<del>` &class=`class_for_listtag`]] */ $xsv = isset($xsv) ? $xsv : ''; $del = isset($del) ? $del: ','; $listtag = isset($class) ? '<li class="'.$class.'">': '<li>'; if(!function_exists("makelist")) { function makelist($v='', $s=',', $l='<li>') { if($v=='')// return blank if no string be submitted. { return; } $vs = explode($s, $v); foreach($vs as $x) { $out .= $l."$x".'</li>'; } return $out; } } return makelist($xsv,$del,$listtag); ?>
使用例:
[[xsv2list? &xsv=`aaa bbb ccc` &del=` ` &class=`foo`]]
は
<li class="foo">aaa</li><li class="foo">bbb</li><li class="foo">ccc</li>
へと変換される。デフォルトの区切り文字はカンマ、クラス名は無しなので、
[[xsv2list? &xsv=`1,2,サム`]]
は
<li>1</li><li>2</li><li>サム</li>
へと変換される。
区切り文字はせいぜいカンマかスペースかタブくらいかと思ったので分割はexplodeに。
特にテストとかしていないので、一応使用は自己責任で。