Re: New New :(( - Trying to figure out a couple things - Please

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



On Tue, 29 Apr 2003 sam@xxxxxxxxxxx wrote:

>   Hi Sam Marcotte here
> 
>  I am real new at this - Old Mainframer and I know what I want to do but
> just
>  not finding the correct functions.
> 
>  I want to figure out how to put info out of a file (it is xml).
> 
>  I need to find a way to look thru the file and find lines that look lik
>   <d:Title>Computers</d:Title>
>  I want to pull out just Computers (remove <?> and write to another file (I
>  can do the writes)
> 
>  Then
>  <d:Description>Computers - ddddddd
>  dddddd
>  dddddd
>  ddddd</d:Description>
>  multi lies from start of desc to end - and take the <?> off - and write
> each
>  record till I find the end
> 
>  I know we are talking about 2 or 3 loops my main problem is find given data
>  in the middle
>  of a line of txt.

There are really two ways to go about this, one is to write your own 
parser, the other is to let a library handle it for you.  Most Linux boxes 
already have expat involved, and if they don't, it's easy to get.  Check 
out the xml docs in the PHP documentation, particularly: 
xml_parse_into_struct and it's relatives.

The other way, parsing it by hand, isn't as bad as all that.  If the file 
isn't very big (say under a megabyte) then just read the whole thing in 
like so:

$file="filename.xml";
$fp = fopen ($file,"r");
$body = fread($fp,filesize($file));
$lines = split ("\n",$body);
foreach($lines as $line){
  if (ereg("thingtomatch",$line)){
    (parse a line here);
  }
}

For parsing a line, look at the regex and string functions.  ereg is 
easier to grasp for most beginners than perl regexes.  For a definition of 
posix regex, on most unix boxes you can type 'man 7 regex' or something 
like it to get a nice page explaining how they work.

Something like:

$a="<A HREF='test.html'>This is a test</A>";
if (eregi("<a",$a)) {
  print "Found the start at ";
  $start = strpos("<A",$a);
  $end = strpos("</A>",$a);
  $len = strlen($a);
  print substr($a,$start,$len-$end);
}

something like that.



[Index of Archives]     [Postgresql General]     [Postgresql Admin]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Yosemite Backpacking]     [Postgresql Jobs]

  Powered by Linux