kikooo all

j'ai un flux xhtml, auquel je cherche à détecter tous les liens pour leur appliquer un zeste de functions avant de les réinjecter dans le flux.

mon code :
CODE
function recodeURL($html) {
    preg_match_all('!href="(.+)"!isU', $str, $href);

    $this->xploz = explode('"', $href[0][1]);

       /*** traitement url ***/
    $url = parse_url($this->xploz[1]);
     
    if( !empty($url['user']) && !empty($url['password']) ) $url['xhtml2pdf']['user_pass'] = $url['user'].':'.$url['password'].'@';
    else $url['xhtml2pdf']['user_pass'] = '';
     
    $url['xhtml2pdf']['href'] = $url['scheme'].'://'.$url['xhtml2pdf']['user_pass'].$url['host'];
     
    if( !empty($url['path']) )    $url['xhtml2pdf']['href'] = $url['xhtml2pdf']['href'].$url['path'];
    if( !empty($url['query']) )    $url['xhtml2pdf']['href'] = $url['xhtml2pdf']['href'].'?'.urlencode($url['query']);
    if( !empty($url['fragment']) )  $url['xhtml2pdf']['href'] = $url['xhtml2pdf']['href'].'#'.$url['fragment'];
     
       /*** pattern ***/
    $search = '!href="(.+)"!isU';
    $replace = 'href="'.$url['xhtml2pdf']['href'].'"';

    $str = preg_replace($search, $replace, $str);
       return($str);
       
       unset($href, $url, $search, $replace);
   }


sauf que dans l'état, la méthode prend la valeur de l'attribut href et la restitue à l'ensemble des liens qui peut exister dans mon flux html...
au lieu d'appliquer celle qui correspond à son lien !


J'ai certainement loupé quelque chose ... mais quoi ?!