Макс
ИМХО, 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;
}