I was using your first code which has $id->text instead of $id->content. Using "content" made the trick.
I am using the first script because of the nice loop. My final goal is to wrap the matching string(s) between tags (a simple replacement of match with tag+match+tag should do it). The hard part is that I need to match n-grams that possibly are split between two nodes (end of 1st node and begin of next one), with the loop I may find some working solution (my idea is to scan a window of two nodes at a time). Why this? Because I am parsing the output of pdftohtml which splits natural language sentences into lines, each line wrapped in its own tags. In the example above, it could be that I need to match the 2-gram "Translation is", which is in 2 adjacent DOMs. This is quite challenging (at least for my 0-parsing-abilities), but you have brought me near my goal. So time to play now.
Edit
Just for the sake of experimenting/learning, I tried with these two HTML snippets:
my $html = '<ul><div class="txt" style="position:absolute; left:84px;
+top:73px;"><span id="f1" style="font-size:11px;vertical-align:baselin
+e;color:rgba(0,0,0,1);">technology of S2S translation, <b>also</b> kn
+own as Spoken Language Translation (SLT),</span></div><div class="txt
+" style="position:absolute; left:44px; top:73px;"><span id="f1" style
+="font-size:11px;vertical-align:baseline;color:rgba(0,0,0,1);">is a n
+ew application of AI,</span></div><li>there</li><li>everyone</li></ul
+>
';
my $html = '<ul><div class="txt" style="position:absolute; left:84px;
+top:73px;"><span id="f1" style="font-size:11px;vertical-align:baselin
+e;color:rgba(0,0,0,1);">technology of S2S translation, <b>also</b> kn
+own as <p>Spoken</p> Language Translation (SLT),</span></div><div cla
+ss="txt" style="position:absolute; left:44px; top:73px;"><span id="f1
+" style="font-size:11px;vertical-align:baseline;color:rgba(0,0,0,1);"
+>is a new application of AI,</span></div><li>there</li><li>everyone</
+li></ul>
';
With the first HTML, using your first script with $id->text, <b>also</b> is not shown, with the second yes. I do not see any rational behind it...
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.