Jennifer-- A couple of things. eregi_replace does not have a limitation parameter, which means that if you use it *all* the strings that match your pattern will be replace with the new pattern. In your case, if I read your code correctly (and I may not--I'm doing this from memory), the eregi replacement you perform will change *all* the paths you have in your file, and not just the first one, which, I believe, is what you're looking for.
Also, there shouldn't be any need to make the replacements one by one. A single replacement should be enough if all the original paths have to be transformed into the same URL. For example: ereg_replace ("{/images/}{test.(jpg|gif)}", "http://www.microsoft.com/images/\\2", $t); This would replace any occurrence of "/images/*.gif" and "/images/*.jpg" to "http://www.microsoft.com/images/*.gif" or *.jpg respectively (once again, double check my regex...doing this from memory). If you *do* need to change each occurrence individually, then you should use preg() instead, which uses Perl syntax and has a limitation parameter. Also--a minor thing and I'm sure you thought of it, but you're not saving the file at the end :-) Hope this helps. Cheers, Marco On Mon, 2002-10-07 at 20:01, Jennifer Swofford wrote: > Hello all, > > I am trying to use php to read through an html file and replace all image > paths, like such: > > Change "images/firstimage.gif" to "http://www.blah.com/firstimage.gif" ... > Change "somesuch/images/secondimage.jpg" to > "http://www.blah.com/secondimage.jpg" > > So I am going through the file and matching the image path strings, > stripping them down to just the image name using "basename", and then adding > "http://www.blah.com/" onto the beginning of them. Except it's not working, > and I'm not sure where my logic has gone awry. Instead of replacing each > image path with its respective image name, it is replacing all image paths > with the *same* image name. > > Here is the code. (Yes I'm new, I apologize for the mess, there are a few > lines in there I'm using for debugging purposes, to show me what it's > doing.) > > <? > $filename = "newexample.html"; > $fd = fopen ($filename, "r"); > $contents = fread ($fd, filesize ($filename)); > > while (preg_match('{(")([A-z0-9_/-](\/))*[A-z0-9_/-]+(.gif|.jpg)}', > $contents, $matches)) { > > echo "<b>MATCHED:</b> ".$matches[0]."<br>\n"; > > $base = basename($matches[0]); > $newimage = "http://www.blah.com/".$base; > echo "<br>base: ".$base."<br>"; > echo "new image: ".$newimage."<br>"; > echo "<hr>"; > > $contents = eregi_replace('\/*[A-z0-9_/-]+(.gif|.jpg)', $newimage, > $contents); > > print $contents; > > } > > fclose ($fd); > > ?> > > When I run it, I get: > > ~~~~~ > MATCHED: "blah/images/first.gif > > base: first.gif > new image: http://www.blah.com/first.gif > ------------------------------------------------------------------------ > <Here it prints the contents of the html file, except all images look like > "http://www.blah.com/first.gif" (when there are supposed to be lots of other > images, such as second.jpg, etc).> > ~~~~~ > > Where have I gone wrong? Thanks to all, as usual, for your hints and help. > > Jen > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php