itemDelimiter

Mark Brownell gizmotron at earthlink.net
Thu Feb 12 12:07:08 EST 2004


Thomas,

Here are three functions for pulling tags out:
What you might need is one of my Parallel Numerical Lineal Parsers:

-- get the title
-- put your HTML into tZap
-- put PNLPgetElement("<title>", "</title>", tZap) into theTitle

-- get the paragraphs in two steps
-- put getPNLPelements("<p>", "</p>", tZap) into theParagraphArray
-- put theParagraphArray[1] into parOne
-- put theParagraphArray[2] into parTwo

You can even get the attributes from this:
> -- <BODY TEXT="#000000" BGCOLOR="#F8D0B8" LINK="#999999" 
> VLINK="#000000" ALINK="#FF0000">

-- put PNLPgetElement("<body", "</body>", tZap) into theBody
-- put PNLPgetAttribute("TEXT", theBody) into theTEXTAttribute
-- put PNLPgetAttribute("BGCOLOR", theBody) into theBGCOLORAttribute

function PNLPgetElement tStTag, tEdTag, stngToSch
   put empty into zapped
   put the number of chars in tStTag into dChars
   put offset(tStTag,stngToSch) into tNum1
   put offset(tEdTag,stngToSch) into tNum2
   if tNum1 < 1 then
     return "error"
     exit PNLPgetElement
   end if
   if tNum2 < 1 then
     return "error"
     exit PNLPgetElement
   end if
   put char (tNum1 + dChars) to (tNum2 - 1) of stngToSch into zapped
   return zapped
end PNLPgetElement

-- put getPNLPelements("<record>", "</record>", tZap) into theArray
function getPNLPelements tStartTag, tEndTag, StringToSearch
   put empty into tArray
   put 0 into tStart1
   put 0 into tStart2
   put 1 into tElementNum
   put the number of chars in tStartTag into dChars
   repeat
     put offset(tStartTag,StringToSearch,tStart1) into tNum1
     put (tNum1 + tStart1) into tStart1
     if tNum1 < 1 then exit repeat
     put offset(tEndTag,StringToSearch,tStart2) into tNum2
     put (tNum2 + tStart2) into tStart2
     if tNum2 < 1 then exit repeat
     --if tNum2 < tNum1 then exit repeat
     put char (tStart1 + dChars) to (tStart2 - 1) of StringToSearch into 
zapped
     put zapped into tArray[tElementNum]
     add 1 to tElementNum
   end repeat
   return tArray
end getPNLPelements

-- put PNLPgetAttribute("name", tZap) into theAttribute
function PNLPgetAttribute tAttribute, strngToSearch
   put empty into zapA
   put quote into Qx
   put tAttribute & "=" & Qx into tAttributeX
   put the number of chars in tAttributeX into dChars
   put offset(tAttributeX,strngToSearch) into tNum1
   if tNum1 < 1 then
     return "error"
     exit PNLPgetAttribute
   end if
   put tNum1 + 1 into tNum2
   put offset(Qx,strngToSearch,tNum2) into tNum3
   put offset("=",strngToSearch,tNum2) into tNum4
   if tNum3 < 1 then
     return "error"
     exit PNLPgetAttribute
   end if
   if tNum4 < tNum3 then
     return "error"
     exit PNLPgetAttribute
   end if
   put char (tNum2 + 1) to (tNum3 - 1) of stngToSch into zapA
   return zapA
end PNLPgetAttribute

Mark Brownell

P.S. I would love a multi-character delimiter.


On Thursday, February 12, 2004, at 05:10  AM, Thomas McGrath III wrote:

> Hello everybody,
>
> I was wondering if the itemDelimiter can be more than one character? I 
> mean instead of "," or ":" can it be "<!--display paragraphs-->" ?
> If the answer is NO then can someone help me understand how to sift 
> through the html below to just extract the title text and the 2 
> paragraph texts? I know I can offset("<title>") field "HTML" but then 
> what can I do to extract the text after that?
> It may be obvious but for the life of me I can't 'see' it.
> Thanks
> TOm
>
> <html>
> <head>
> <title>Just for Today Meditation</title>
> </head>
> <BODY TEXT="#000000" BGCOLOR="#F8D0B8" LINK="#999999" VLINK="#000000" 
> ALINK="#FF0000">
> <!--calculate day of the year -->
> <!-- numdays=datediff("d",firstday,now)+1 -->
>  <!--display paragraphs-->
>
>    <p>Our fantasies and expectations about the future may be so 
> extreme that, on our first date with someone, we find ourselves 
> wondering which lawyer we'll use for the divorce. Almost every 
> experience causes us to remember something from the past or begin 
> projecting into the future. </p>
>
>    <!--display paragraphs-->
>
>    <p>At first, it's difficult to stay in the moment. It seems as 
> though our minds won't stop. We have a hard time just enjoying 
> ourselves. Each time we realize that our thoughts are not focused on 
> what's happening right now, we can pray and ask a loving God to help 
> us get out of ourselves. If we regret the past, we make amends by 
> living differently today; if we dread the future, we work on living 
> responsibly today. </p>
>
> </body></html>
> Thomas J McGrath III



More information about the use-livecode mailing list