Макс 
ИМХО, htmlparser\'ом изменять ссылки - это из серии пушкой по воробьям. Parser - вещь хорошая, но уж слишком громоздкая. Так, например, чтобы изменить все ссылки на данной странице, потребовалось 2.2778771 сек. Все же многовато.
Вот сам тест (если кто не верит)
require "parser/htmlparser.inc";
require "parser/common.inc";
$p=new HtmlParser("index.htm",unserialize(Read_File("htmlgrammar.cmp")),"index.htm",1);
$p->parse();
ChangeLinks(&$p->content);
GetPageSrc(&$p->content,&$src);
function ChangeLinks($c) {
      for ($i = 0; $i <= $c[\'contentpos\']; $i++) {
            if ($c[$i][\'type\'] == "tag" && $c[$i][\'data\'][\'type\'] == "open") {
                  if ($c[$i][\'data\'][\'name\'] == "a" && $c[$i][\'pars\'][\'href\']) {
                        if (substr($c[$i][\'pars\'][\'href\'][\'value\'], 0, 7)!="http://" && $c[$i][\'pars\'][\'href\'][\'value\'][0] !="/") {
                              $c[$i][\'pars\'][\'href\'][\'value\'] = "http://myserver.com/".$c[$i][\'pars\'][\'href\'][\'value\'];
                        }
                  }
            }
            if ($c[$i][\'content\']) ChangeLinks(&$c[$i][\'content\']);
      }
      return $c;
}