Foros del Web » Programando para Internet » PHP »

Reemplazando contenido de un texto

Estas en el tema de Reemplazando contenido de un texto en el foro de PHP en Foros del Web. Hola, En mi web tengo una sección de artículos, y el "verarticulo.php" contiene esto: Código: <? include ("config/index.php"); $query = "SELECT * FROM `articulos` WHERE ...
  #1 (permalink)  
Antiguo 23/03/2005, 11:42
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
Reemplazando contenido de un texto

Hola,

En mi web tengo una sección de artículos, y el "verarticulo.php" contiene esto:

Código:
              <?
include ("config/index.php");

$query = "SELECT * FROM `articulos` WHERE `id` = '$id'";
$result =  mysql_db_query ($dbname, $query, $link);
while ($row = mysql_fetch_array ($result)) {
	?>
	<p align="justify"><span class="Estilo1">Art&iacute;culos &gt; <? printf($row[titular]); ?><br>
</span><br>
<strong><? printf($row[fecha]); ?></strong></p>
	<p align="justify" class="Estilo3"> <?php echo nl2br("$row[texto]"); ?>
          </p>
	  <?
}
?>
Podéis ver que en la fila "texto", hace un nl2br, que me lo recomendaron hace poco en este mismo foro, para que detecte los saltos de línea.

En este caso, me gustaría incluir algún código para que, por ejemplo, al poner un smile, salga una imagen. ( por ejemplo, si pongo ":)" que salga la siguiente cara: )

Y también que, por ejemplo, al poner [red] y [/red] me lo reemplace por <font color="#123456"> y </font>

Muchísimas gracias

P.D: He usado la búsqueda del foro, y he encontrado algún resultado, pero soy iniciado en PHP y no me han aclarado lo suficiente. Os pido que tengáis en cuenta este aspecto.

Última edición por david_M_G; 23/03/2005 a las 11:43
  #2 (permalink)  
Antiguo 23/03/2005, 11:46
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
ve la funcion str_replace()
http://mx2.php.net/manual/es/function.str-replace.php

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 23/03/2005, 11:48
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
Ya te vi poner ese enlace en otra ocasión, pero no me aclara lo suficiente


PD: Veo que estás en todo
  #4 (permalink)  
Antiguo 23/03/2005, 12:08
Avatar de Lord of freaks  
Fecha de Ingreso: octubre-2004
Ubicación: Madrid
Mensajes: 334
Antigüedad: 13 años, 2 meses
Puntos: 2
Hola

Lo mejor que puedes hacer a mi gusto es crear un funcion de reemplazo con los términos que quieras reemplazar, lo ideal es hacerlo con preg_replace o ereg_replace, pero como apaño si no controlas de expresiones regulares lo mejor es str_replace.

Te dejo un ejemplo para que veas como va:

Código PHP:
// creas tu función de reemplazo con tantos reemplazos como quieas

function reemplazo($cadena){
$cadena=str_replace(":)","<img src='sonrisa.gif'>",$cadena);
$cadena=str_replace("[red]","<font color='#123456'>",$cadena);
$cadena=str_replace("[/red]","</font>",$cadena);
$cadena=str_replace("[negrita]","<b>",$cadena);
$cadena=str_replace("[/negrita]","</b>",$cadena);
return 
$cadena;
// .. y asi tantas como quieras

Luego a la hora de usarla solo tienes que llamarla en tu script via include y usarla

Código PHP:
// supongamos que guardas tus funciones en functions.php
include ("functions.php");

// la llamas cuando quieras pintar el texto con reemplazo (en tu script sería así)

<p align="justify" class="Estilo3"> <?php echo reemplazo(nl2br("$row[texto]")); ?>
Espero haberte aclarado un poco.
Un saludo
__________________
Una vez un elemental de rayos mató una tribu entera de tritones.

¡¡ El sólo quería darse un baño !!

http://www.frikilandia.com

Neither Fu Nor Fa

Última edición por Lord of freaks; 23/03/2005 a las 12:09 Razón: error de código
  #5 (permalink)  
Antiguo 23/03/2005, 14:14
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
Entendí perfectamente tu aportación, pero el texto se muestra igual... es decir, que donde he puesto [negrita] me escribe [negrita], etc...

¿Me he equivocado de sitio al ponerlo?

Código PHP:
              <?
include ("config/index.php");

$query "SELECT * FROM `articulos` WHERE `id` = '$id'";
$result =  mysql_db_query ($dbname$query$link);
while (
$row mysql_fetch_array ($result)) {
    
?>
    
    <? include ("funciones.php"); ?>
    
    <p align="justify"><span class="Estilo1">Art&iacute;culos &gt; <? printf($row[titular]); ?><br>
</span><br>
<strong><? printf($row[fecha]); ?></strong></p>
    <p align="justify" class="Estilo3"> <?php echo nl2br("$row[texto]"); ?>
          </p>
      <?
}
?>
Gracias
  #6 (permalink)  
Antiguo 23/03/2005, 14:23
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
Lo he puesto exactamente donde tú me dijiste, y tampoco.
  #7 (permalink)  
Antiguo 23/03/2005, 16:22
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 9 meses
Puntos: 17
Hago mi aporte... tu archivo debería quedar así
Código PHP:
<?
include ("config/index.php");

function 
reemplazo($cadena){
$cadena=str_replace(":)","<img src='sonrisa.gif'>",$cadena);
$cadena=str_replace("[red]","<font color='#123456'>",$cadena);
$cadena=str_replace("[/red]","</font>",$cadena);
$cadena=str_replace("[negrita]","<b>",$cadena);
$cadena=str_replace("[/negrita]","</b>",$cadena);
return 
$cadena;


$query "SELECT * FROM `articulos` WHERE `id` = '".$id."'";
$result =  mysql_db_query ($dbname$query$link);
while (
$row mysql_fetch_array ($result)) {
    
?>
    
    <? include ("funciones.php"); ?>
    
    <p align="justify"><span class="Estilo1">Art&iacute;culos &gt; <? printf($row[titular]); ?><br>
</span><br>
<strong><? printf($row[fecha]); ?></strong></p>
    <p align="justify" class="Estilo3"> <?php echo reemplazo(nl2br($row['texto']))."</p>";
}
?>
  #8 (permalink)  
Antiguo 23/03/2005, 16:31
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
¡¡Aleluya, una aportación!!

Me sigue dando error:

Fatal error: Cannot redeclare reemplazo() in /home/workdmg/public_html/funciones.php on line 4

Por un monento creía que era por que se había repetido el código :

Código:
function reemplazo($cadena){
$cadena=str_replace(":)","<img src='sonrisa.gif'>",$cadena);
$cadena=str_replace("[red]","<font color='#123456'>",$cadena);
$cadena=str_replace("[/red]","</font>",$cadena);
$cadena=str_replace("[negrita]","<b>",$cadena);
$cadena=str_replace("[/negrita]","</b>",$cadena);
return $cadena;
}
Y luego:

Código:
<? include ("funciones.php"); ?>

Pero si quito uno de los dos, el texto no me hace caso y lo escribe tal cual. ( [negrita] es [negrita], [red] es [red] ....)
  #9 (permalink)  
Antiguo 23/03/2005, 16:42
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 9 meses
Puntos: 17
LOL
hice el include a mano... o sea que sí, redundan.
Eliminá el mío y dejá el include que te habían dicho.

no sé xq no anda
  #10 (permalink)  
Antiguo 23/03/2005, 16:46
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
¡¡Yo menos!!


Por favor, ayuda
  #11 (permalink)  
Antiguo 23/03/2005, 19:35
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
¿A nadie se le ocurre nada? No me lo creo :-p
  #12 (permalink)  
Antiguo 23/03/2005, 19:46
 
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 249
Antigüedad: 14 años
Puntos: 0
quizás sea una estupidez, pero me gustaría hacer la prueba... A mi me funciona perfectamente la función str_replace. Pero cuando tengo que enviarle muchos valores genero una array, mejor dicho dos:

Código PHP:
$reemplazar = array(':)'':(');
$reemplazar_con = array('<img src="happy.gif" />''<img src="sad.gif" />'); 
Un saludo.
__________________
Crónicas de un Programador es un sitio que registra lo que ocurre cada día en la vida de un desarrollador. Aquí, intentaremos contar nuestras experiencias diarias, errores, aciertos y técnicas, que pueden llegar a serles de utilidad.
  #13 (permalink)  
Antiguo 23/03/2005, 19:49
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
Especifica un poco más. Te recuerdo que soy muuuy iniciado aún


Gracias!

Última edición por david_M_G; 23/03/2005 a las 19:53
  #14 (permalink)  
Antiguo 24/03/2005, 06:01
Avatar de Lord of freaks  
Fecha de Ingreso: octubre-2004
Ubicación: Madrid
Mensajes: 334
Antigüedad: 13 años, 2 meses
Puntos: 2
Mira a ver si asi funciona

Código PHP:
<?
function reemplazo($cadena){
$cadena=str_replace(":)","<img src='sonrisa.gif'>",$cadena);
$cadena=str_replace("[red]","<font color='#123456'>",$cadena);
$cadena=str_replace("[/red]","</font>",$cadena);
$cadena=str_replace("[negrita]","<b>",$cadena);
$cadena=str_replace("[/negrita]","</b>",$cadena);
return 
$cadena;
}
include (
"config/index.php");

$query "SELECT * FROM articulos WHERE id = '$id'";
$result =  mysql_db_query ($dbname$query);
while (
$row mysql_fetch_array ($result)) {
?>
    
<p align="justify">
<span class="Estilo1">Art&iacute;culos &gt; <? printf($row[titular]); ?><br></span><br>
<strong><? printf($row[fecha]); ?></strong>
</p>
<p align="justify" class="Estilo3">
<? echo nl2br(reemplazo($row['texto']));
}
?>
</p>
__________________
Una vez un elemental de rayos mató una tribu entera de tritones.

¡¡ El sólo quería darse un baño !!

http://www.frikilandia.com

Neither Fu Nor Fa

Última edición por Lord of freaks; 24/03/2005 a las 06:20
  #15 (permalink)  
Antiguo 24/03/2005, 08:07
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
¡¡¡¡Funciona!!!! ¡Funciona, funciona, funciona!


¡Muchas gracias! ¿Pero cuál fue el cambio? ¡Eso es lo que todavía no entiendo!
  #16 (permalink)  
Antiguo 24/03/2005, 10:08
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 9 meses
Puntos: 17
primero ejecuta reemplazo y después nl2br... no sé xq el orden inverso genera problema... ¿Alguno me lo explica? 8-)
  #17 (permalink)  
Antiguo 24/03/2005, 11:44
Avatar de Lord of freaks  
Fecha de Ingreso: octubre-2004
Ubicación: Madrid
Mensajes: 334
Antigüedad: 13 años, 2 meses
Puntos: 2
El fallo no es el orden de nl2br y reemplazo, sino que tienes dentro del bucle while la línea:

Código PHP:
include ("funciones.php"); 
Por eso te dice:

"Cannot redeclare reemplazo()" <- no puede declarar la misma funcion 2 veces con el mismo nombre

Un saludo
__________________
Una vez un elemental de rayos mató una tribu entera de tritones.

¡¡ El sólo quería darse un baño !!

http://www.frikilandia.com

Neither Fu Nor Fa
  #18 (permalink)  
Antiguo 24/03/2005, 13:03
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 12 años, 10 meses
Puntos: 20
Gracias!! Muy amable.

Os lo agradezco a todos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:45.