Autor Tema: [SOLUCIONADO] Reemplazar etiqueta <a>  (Leído 539 veces)

Desconectado Masato

  • PHPero Avanzado
  • ****
  • Mensajes: 480
  • Karma: 12
  • Sexo: Masculino
  • <?php echo "Solo quiero aprender php"; ?>
    • Ver Perfil
    • Masato Design!
[SOLUCIONADO] Reemplazar etiqueta <a>
« en: 09 de Enero de 2013, 06:37:14 am »
Buenas, tengo un pequeño problema y es que quiero restringir a todos los usuarios no administradores de poder ver enlaces, hice una pequeña función pero tiene errores:


function check_link($text,$rank) {
	
if (
$rank == &#39;1&#39;) {
	
	
$result $text;
	
} else {
	
	
$result preg_replace("<a href=\"\\1\">\\2</a>","<center><font color=&#39;red&#39;><b>SOLO LOS ADMINISTRADORES PUEDEN VER LOS ENLACES.</b></center>",$text);
	
	
$result preg_replace("<a href=\"\\1\">\\1</a>","<center><font color=&#39;red&#39;><b>SOLO LOS ADMINISTRADORES PUEDEN VER LOS ENLACES.</b></center>",$text);
	
}
return (
$result);
}


 Al usar el preg_replace me larga cada dos por tres (va, siempre) el error  Warning: preg_replace() [function.preg-replace]: Unknown modifier '\', no había caso que probara poniendo \\1 o $1, siempre largaba el error. ¿Alguien sabe cual puede ser el error?
« Última modificación: 09 de Enero de 2013, 19:00:49 pm por Masato »

Comunidad PHPeros

[SOLUCIONADO] Reemplazar etiqueta <a>
« en: 09 de Enero de 2013, 06:37:14 am »

Desconectado LuisOrozco

  • PHPer@
  • **
  • Mensajes: 58
  • Karma: 6
  • Sexo: Masculino
  • Incipiente Software Developmenet Manager
    • Ver Perfil
Re:[AYUDA] Reemplazar etiqueta <a>
« Respuesta #1 en: 09 de Enero de 2013, 10:44:41 am »
Te faltó escapar la diagonal del cierre de la etiqueta a.

</a>... debería quedar <\/a> en ambos casos. supongo que es eso. saludos.
Un día se me ocurrió nacer... y lo hice.

Desconectado Masato

  • PHPero Avanzado
  • ****
  • Mensajes: 480
  • Karma: 12
  • Sexo: Masculino
  • <?php echo "Solo quiero aprender php"; ?>
    • Ver Perfil
    • Masato Design!
Re:[AYUDA] Reemplazar etiqueta <a>
« Respuesta #2 en: 09 de Enero de 2013, 16:11:50 pm »
No creo que eso tenga algo que ver, de todas formas larga el mismo error. Se me hace que es la sintaxis de la etiquta que está mal expresada para detectar su contenido, aunque no se me ocurre otra forma para llamarlo :S

[EDIT]

Encontré otra forma que si hace lo que quiero:


function check_link($text,$rank) {
	
if (
$rank == &#39;1&#39;) {
	
	
$result $text;
	
} else {
	
	
$result preg_replace("/<a(.*)href=\"([^\"]*)\"([^\"]*)>/","<font color=&#39;red&#39;><b>SOLO LOS ADMINISTRADORES PUEDEN VER LOS ENLACES.</b></font>",$text);
	
	
$result preg_replace(&#39;/<a(.*)href=\&#39;([^"]*)\&#39;([^"]*)>/&#39;,"<font color=&#39;red&#39;><b>SOLO LOS ADMINISTRADORES PUEDEN VER LOS ENLACES.</b></font>",$text);
	
}
return (
$result);
}


Pero ahora el problema es que le da prioridad a los enlaces del formato <a href=''> y no a los  <a href="">, tienen alguna idea de como solucionarlo para que me tome los dos formatos?
« Última modificación: 09 de Enero de 2013, 16:17:00 pm por Masato »

Desconectado ilovepixel

  • PHPer@ Fijo
  • ***
  • Mensajes: 149
  • Karma: 9
  • Sexo: Masculino
  • Game Artist & Developer
    • Ver Perfil
    • i ■ pixel
Re:[AYUDA] Reemplazar etiqueta <a>
« Respuesta #3 en: 09 de Enero de 2013, 18:09:10 pm »
Intenta con esto:

Código: [Seleccionar]
$result = preg_replace("(<a[^<]+</a>)","<font color='red'><b>SOLO LOS ADMINISTRADORES PUEDEN VER LOS ENLACES.</b></font>",$text);

Saludos.

Desconectado Masato

  • PHPero Avanzado
  • ****
  • Mensajes: 480
  • Karma: 12
  • Sexo: Masculino
  • <?php echo "Solo quiero aprender php"; ?>
    • Ver Perfil
    • Masato Design!
Re:[AYUDA] Reemplazar etiqueta <a>
« Respuesta #4 en: 09 de Enero de 2013, 18:59:55 pm »
Gracias ilovepixel, funciona a la perfección :D