Написал щас такой класс, дописывает в нужные атрибуты, нужные переменные =) PHP: <? class HtmlTransParse { public static $trans_tag=array(); public static $trans_replace=array(); static function AddTransTag($tag,$attr=false){ if(is_array($tag)){ foreach($tag as $key=>$val)self::addtranstag($key,$val); }else{ self::$trans_tag[$tag]=(array)$attr; } } static function AddTransReplace($var,$value=0){ if(is_array($var)){ foreach($var as $key=>$val)self::AddTransReplace($key,$val); }else{ self::$trans_replace[$var]=$value; } } static function ParseTransTag($text){ if(!empty(self::$trans_tag) && !empty(self::$trans_replace)){ foreach(self::$trans_tag as $tag=>$attrs){ for($i=0,$c=count($attrs);$i<$c;$i++){ $text=preg_replace_callback("#<{$tag}\s(?:.*?){$attrs[$i]}=(\"|')(.*?)\\1(?:.*?)>#is", array("self","Callback_ParseTag") ,$text); } } } return $text; } private static function Callback_ParseTag($m){ $varstr=""; foreach((array)self::$trans_replace as $var=>$value) $varstr.=$var."=".$value."&"; $varstr=substr($varstr,0,-1); if(strpos($m[2],"?")){ return str_replace($m[2],$m[2]."&".$varstr,$m[0]); }else{ return str_replace($m[2],$m[2]."?".$varstr,$m[0]); } } } ?> пример PHP: <? $text="Текст со ссылками и формами"; HtmlTransParse::AddTransTag(array("a"=>"href","form"=>"action")); HtmlTransParse::AddTransReplace(array("referal"=>"kakoi to referal","random"=>rand(1,999))); print HtmlTransParse::ParseTransTag($text); ?> вроде без глюков =) Правдо у меня такое ощущение что это велосипед и в пхп есть уже готовая реализация..
ну типа была ссылка <a href="/showtopic/?id=10"></a> будет <a href="/showtopic/?id=10&referal=kakoi to referal&random=43"></a> мне просто надоело рефералы в шаблончиках ручками писать =)