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);
}
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 ?!