Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/05/2010, 11:45
Avatar de mayid
mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: buscar links sin http ni www ni # al principio

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$matchesPREG_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($link01)) == "#")  {}
                    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.