Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/02/2007, 12:37
Avatar de el_javi
el_javi
 
Fecha de Ingreso: marzo-2005
Ubicación: MAdrid
Mensajes: 844
Antigüedad: 19 años, 1 mes
Puntos: 10
Problema con eregi_replace

Hola a todos.

Os comento: Estoy intentando hacer lo siguiente:

Tengo un contenido, que es HTML, y quiero reemplazar todos los enlaces, siguiendo el siguiente criterio:
Todos los que sean enlaces internos de mi Web, ponerles delante una cadena, de la carpeta que tiene que cargar
Mi problema es que: los href="javascript:..." y los href="http://www......" me hace reemplazo, perdiendo mis enlaces.

Me suena que un ereg_replace, puede tener condiciones de negación (usando el caracter ^) pero no lo consigo hacer funcionar.

Con el siguiente ejemplo, consigo lo que quiero
Código PHP:
<?
    $dirRedirect 
"espanol/html/";
    
    
$text "<a href=\"candidato.php\">Pinchame un poco</a>";

    
$text eregi_replace("(a href\=(\"|\'))""a href=\\2".$dirRedirect$text);
    
    echo(
$dirRedirect."<br><br><br>".$text."<br><br><br>");
?>

Con el siguiente ejemplo, me mantiene bien los JAVASCRIPT, pero no hace el reemplazo que necesito
Código PHP:
<?
    $dirRedirect 
"espanol/html/";
    
    
$text "<a href=\"candidato.php\">Pinchame un poco</a>";
    
$text.= "<br><br><br><br><br><br><a href=\"javascript:alert('Javi')\">Alertame un poco</a>";
    
$text.= "<br><br><br><br><br><br><a href=\"http://www.javiscript.com\">Abreme en nueva</a>";
    
$text.= "<br><br><br><br><br><br><a href=\"www.javiscript.com\">Abreme en nueva2</a>";
    
    
$text eregi_replace("(a href\=(\"|\'))[^javascript]""a href=\\2".$dirRedirect$text);
    
    echo(
$dirRedirect."<br><br><br>".$text."<br><br><br>");
?>
Elemento a destacar de la Regex: (a href\=(\"|\'))[^javascript]

En este ejemplo, me hace bien el reemplazo para todo excepto para javascript
Código PHP:
<?
    $dirRedirect 
"espanol/html/";
    
    
$text "<a href=\"candidato.php\">Pinchame un poco</a>";
    
$text.= "<br><br><br><br><br><br><a href=\"javascript:alert('Javi')\">Alertame un poco</a>";
    
$text.= "<br><br><br><br><br><br><a href=\"http://www.javiscript.com\">Abreme en nueva</a>";
    
$text.= "<br><br><br><br><br><br><a href=\"www.javiscript.com\">Abreme en nueva2</a>";
    
    
$text eregi_replace("(a href\=(\"|\'))[^http://]""a href=\\2".$dirRedirect$text);
    
    echo(
$dirRedirect."<br><br><br>".$text."<br><br><br>");
?>
Elemento a destacar de la Regex: (a href\=(\"|\'))[^h ttp://]
**(NOTA: pongo un espacio en http:// para que no lo interprete como un enlace)

No se si me he explicado bien.

Espero que alguien pueda ayudarme

Gracias de antemano