Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/05/2010, 10:22
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

Sigo sin resolverlo. Creo que las expresiones regulares para esto son difíciles, así que opté por combinarlas con otros métodos. Pero me trabé.

Lo que necesito es buscar links en una pagina. Los links puede que tengan un subfijo _de o _es o lo que fuere. O también puede que no lo tengan. Yo lo que necesito, en todo caso, es reemplazar ese subfijo por otro:

Código PHP:

$subfix 
$_POST['subfix'];
$pageID $_POST['pageID'];

$sections mysql_query("SELECT sections FROM manual_contents WHERE page_id = '$pageID'") or die("Error selecting page".mysql_error());
            
while (
$section mysql_fetch_array($sections)){

// anchors subfix
$hrefName '/<a href="([^"]*)">(.*?)<\/a>/is'// http|www|com

            
preg_match_all($hrefName$section[0], $matchesPREG_SET_ORDER);
                        
            for(
$i=0;$i<count($matches);$i++){ 
                                    
                if (isset(
$matches[$i][1]) and trim($matches[$i][1]) != "") {  
                    
                    
$link $matches[$i][1];
                    if(
trim(substr($link01)) != "#")  {}
                    elseif (
strpos($link,"http") !== false) {}
                    elseif (
strpos($link,"www") !== false) {}
                    elseif (
strpos($link,".com") !== false) {}
                    else {
                        
str_replace($subfix.".html""_".$_SESSION['lang'].".html"$link);
                    }
                }        
                }; 
En este codigo, primero obtengo los links. Luego compruebo:

- que el primer caracter no sea #
- que la palabra no contenga "http"
- que la palabra no contenga "www"
- que la palabra no contenga ".com"

Luego reemplazo los links que pasaron el filtro. Pero los resultados se pierden, porque no estoy modificando el texto original.... :(