Finalmente lo solucioné, en gran parte, así:
Código PHP:
// anchors subfix
$hrefName = '/<a href=([^>]*)>(.*?)<\/a>/is'; // http|www|com
preg_match_all($hrefName, $contents, $matches, PREG_SET_ORDER);
for($i=0;$i<count($matches);$i++){
if (isset($matches[$i][1]) and trim($matches[$i][1]) != "") {
$link = str_replace('"','',trim($matches[$i][1]));
$link = str_replace("'",'',trim($link));
if(trim(substr($link, 0, 1)) == "#") {}
elseif (strpos($link,"http") !== false) {}
elseif (strpos($link,"www") !== false) {}
elseif (strpos($link,".com") !== false) {}
else {
$replacement = str_replace($Originalsubfix.".html", $destSuffix.".html", $link);
$contents = str_replace($link, $replacement, $contents);
}
}
};
Aunque hay un problema. Con la selección obtengo no solo los href sino cualquier otro atributo que tenga la etiqueta <a>
Si usara este otro selector, dejando las comillas afuera, también habría un problema:
$hrefName = '/<a href="([^>]*)">(.*?)<\/a>/is';
- por un lado, las comillas simples no se detectarían.
- por otro lado, en las paginas que estoy procesando (muchas) hay links que tienen salto de renglon desdpues del signo =
De cualquier manera, la expresión tendría que funcionar porque hay un modificador /s, pero no funciona.