[操作疑難] 我手上有一個epub檔案 請問 如何 搜尋並取代 所有tag

本帖最後由 BenchPlayer 於 2016-9-21 16:55 編輯

請問要 下載甚麼軟件 及 方法?
Thank thank everyone
   
柯林斯 德語字典 <--就是這個檔案

find and replace all <span class="bold">*</span> with <h2 >*</h2 >
while keeping the sub tag, <span class="underline">*</span> unchanged.

    <span class="bold"> //<--最外面的tag, 沒有更外面
    <span class="underline">
    *contents are different
    </span>
    </span> //<--最外面的tag, 沒有更外面

To

    <h2> //<--最外面的tag, 沒有更外面
    <span class="underline">
    *contents are different
    </span>
    </h2 > //<--最外面的tag, 沒有更外面

我諗需要寫programme轉
普通replace功能分唔到某個</span>係唔係對應<span class="bold">

TOP

網上有朋友教過我爾個方法
但下載打開 php 5 之後
唔識怎做

至於工具的話,會php就推薦你用simplehtmldom

寫法應該就...   
<?php
  include "simplehtmldom/smiplehtmldom.php";
  $html = file_get_html('a.html'); //epub html
  for($i=0;$i< count($html->find("span[class='bold']"));$i++)
  {
    $dom = $html->find("span[class='bold']")[$i];
    $dom->tag="h2";
    $dom->class=null;
    $html->find("span[class='bold']")[$i]=$dom;
  }
  $html->save('a.html');

參考
http://simplehtmldom.sourceforge ... #section_quickstart

沒驗證不知道對不對 XD   

TOP

用一個text editor (notepad++, textwrangler) 做 regular expression replace 咪搞掂囉,駛乜咁複雜

TOP

用一個text editor (notepad++, textwrangler) 做 regular expression replace 咪搞掂囉,駛乜咁複雜 ...
chi251155 發表於 2016-9-21 16:15



但如果原文係
<span> <span class="bold"> <span>text</span> </span> </span>
咁無論repeater用greedy定lazy都會配對錯

TOP

本帖最後由 BenchPlayer 於 2016-9-21 16:54 編輯

<span class="bold"> //<--最外面的tag, 沒有更外面
<span class="underline">
*contents are different
</span>
</span> //<--最外面的tag, 沒有更外面

TOP

回覆 5# EITCo
可以中間食一個或多個其他span同element...不過好難砌咁解

TOP

https://www.dropbox.com/s/6alv5z ... dition%29.epub?dl=0

用左Java Jsoup改,睇下得唔得

TOP

本帖最後由 EITCo 於 2016-9-21 17:42 編輯
回覆  EITCo
可以中間食一個或多個其他span同element...不過好難砌咁解
chi251155 發表於 2016-9-21 17:18



以我所知又應該唔得喎
因為HTML或一般的XML根本唔屬於regular language
用regular expression parse唔得晒一切XML

假設<span class="bold"></span>內有任意多層nested tags
如果open tag用A表示, closed tag用B表示
就即係要用regex去match {"", "AB", "AABB", "AAABBB", ...}
Regex應該做唔到呢種
就算用capture group,都係match得{"A_A", "AA_AA", "AAA_AAA", ...}呢類

如果話保證<span class="bold">入面最多nest個<span class="underline">
呢啲限定情況就寫到regex嘅
任意的XML就唔得了

TOP

本帖最後由 chi251155 於 2016-9-21 18:11 編輯

樓主接野
https://drive.google.com/open?id=0B69AJ4Tet_3beEgtbFl1T3c2aDQ

TOP