> 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\\1><table 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

Reply via email to