[PHP] eregi_replace and regular expressions

2002-09-30 Thread Eric Dean

Hello all,

I am trying to add html code using php on the fly while uploading web pages
to our database.  All of my replace functions seem to work well except one.
I am trying to add a table tag after the body tag.  It is easy to find
the body tag because there is only one body in an html document. I am
having a terrible time trying to find the end of the tag because it has
unknown length and contents, but it does end with a . So here is what
I've tried:

$filedata = eregi_replace(body(.*),body\\1table border=0 
width='80%',$filedata);

This line of code happily adds the table border=0 width='80%' at the end
of the document. eregi_replace uses a case insensitive matching. The reg
exp is matching the entire $filedata rather than stopping at the first 
after body. How do I get it to stop at the first  after body?

What am I doing wrong?

Thank you,

-- 


Eric Dean  [EMAIL PROTECTED]
Chief Curator, Office of Visual Materials
School of Art and Art History, University of Iowa

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




RE: [PHP] eregi_replace and regular expressions

2002-09-30 Thread John W. Holmes

 I am trying to add html code using php on the fly while uploading web
 pages
 to our database.  All of my replace functions seem to work well except
 one.
 I am trying to add a table tag after the body tag.  It is easy to
find
 the body tag because there is only one body in an html document. I
am
 having a terrible time trying to find the end of the tag because it
has
 unknown length and contents, but it does end with a . So here is
what
 I've tried:
 
 $filedata = eregi_replace(body(.*),body\\1table border=0
 width='80%',$filedata);
 
 This line of code happily adds the table border=0 width='80%' at the
end
 of the document. eregi_replace uses a case insensitive matching. The
reg
 exp is matching the entire $filedata rather than stopping at the first

 after body. How do I get it to stop at the first  after body?

It's being greedy. You are telling it to match anything and everything,
and then end with a . 

Try something like this, instead.

eregi_replace(body([^]*)

That'll match anything after body and between the closing  tag, but
won't match the  of the next tag. Don't know if I explained that very
well, but have a go at it. :)

---John Holmes...



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php