これ何て呼びますか Part2

<ul>
<li>ほげ</li>
<li>ふが
<ul>
<li>foo</li>
<li>bar</li>
</ul>

</li>
<li>あちゃ</li>
</ul>

みたいなulのネスト(ほんとはもっと長い)を、
phpや秀丸を使って、

エクセルに入れられるタブ区切り(以下の様な)にできないでしょうか?

ほげ
ふが
  foo
  bar
あちゃ

以上、よろしくお願い申し上げます。

A 回答 (2件)

PHP のプログラムならば



$doc = new DOMDocument();
$doc->loadHTML('<ul><li>ほげ<ul><li>ふが</ul><ul>');
foreach ($doc->getElementsByTagName('li') as $item){
_ $xpath = $item->getNodePath();
_ preg_match_all('#/ul/#', $xpath, $m, PREG_SET_ORDER);
_ $txt = str_repeat("\t", count($m) - 1);
_ foreach ($item->childNodes as $c) {
_ _ if (XML_TEXT_NODE == $c->nodeType) {
_ _ _ $txt .= $c->nodeValue;
_ _ }
_ }
_ echo $txt . "\n";
}
    • good
    • 0

DOM関連の処理でなんとかいけるのでしょうけど


すなおに頭から文字列として処理するなら
<li>タグを探し、その前にある<ul>の数から</ul>の数を引いた数だけタブを挿入するような
ロジックでしょうか?ただし・・・・

liタグのなかの文字列を何処から何処までとるか
ulやliタグはシンプルに閉じているのか?それともclassやidなど指定される可能性があるのか

たとえば・・・
<ul>
<li>aaa
<ul><li>bbb</li></ul>
ccc</li>
</ul>
という書式だってまちがいではありません。li直後の文字列をどう抜くかによります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報