Ver Mensaje Individual
  #14 (permalink)  
Antiguo 24/05/2007, 18:21
Snake nS
 
Fecha de Ingreso: diciembre-2004
Ubicación: Cordoba - Argentina
Mensajes: 503
Antigüedad: 19 años, 5 meses
Puntos: 1
Re: Problema con str_replace (ya casi gano la batalla, nececito un empujon!!)

Código:
	

// NOS LLEGA UN PRIVVADO QUE SE TOMA DE LA BD, SI TIENE [CITAR] el PREG_REPLACE SE ENCARGA. MOSTRAMOS EL MENSAJE:

<div>Mensaje</div>
<?
$mensaje = $row['mensaje']; 
$mensaje=preg_replace("/\[citar\=\"(.+)\"\](.*)\[\/citar\]/si","<div ><p><b>\\1 Dijo:</b></p>\\2</div>",$mensaje);
echo $mensaje;
?>
</div>

// SI EL USUARIO PONE RESPONDER MANDAMOS LOS DATOS DEL MENSAJE PARA QUE OTRO ARCHIVO LOS PROCESE

<div>
	<form action="" method="post">
		<input name="go" value="enviar" type="hidden" />
		<input name="admin" value="enviar_mensaje" type="hidden" />
		<input name="id" value="<?=$row['id']?>" type="hidden" />
		<input name="nick" value="<?=$row['nick']?>" type="hidden" />
		<input name="nombre" value="<?=$row['nombre']?>" type="hidden" />
		<input name="asunto" value="<?=$row['asunto']?>" type="hidden" />
		<input name="mensaje" value="<?=$row['mensaje']?>" type="hidden" />
		<input name="res" value="1" type="hidden" />
		<input class="btnpanel" name="responder" type="submit" value="Responder">
	</form>
</div>

//LLEGA AL ARCHIVO DE PROCESAMIENTO Y SI RES ES IGUAL A 1 SIGNIFICA QUE ES UNA RESPUESTA ENTONCES CONFECCIONAMOS EL CITAR CON EL NOMBRE DE LA PERSONA QUE SE ENCUENTRA EN EL $_POST['nombre'] enviado por el formulario anterior.

Se lo ponemos al usuario en el TEXT AREA.

<? 
if($_POST['res'] == '1') {
	$ncitar = '[citar="' . $_POST['nombre'] . '"]'; 
	$m = $ncitar .$_POST['mensaje']. "[/citar]";
	echo "<textarea name='mensaje'>";
	echo $m;
	echo "</textarea>";
} 

El usuario presiona enviar, entonces se guarda en la base de datos.

El problema en si es el siguiente, supongamos que yo respondo un mensaje que me envian, cuando la otra persona quiera responder mi respuesta el preg_replace dejar algo como esto:

Cita:
[citar="Raul"][citar=[/citar]
Cita:
fijate qe cuando responda no armar el nuevo mensaje con el ya pasado por preg_replace,,
Claro, ese es el tema, no se me ocurre como hacer para que no responda el tomado por preg_replace, si remover todo lo que este dentro de [citar="nombre"]dadad[/citar] y hacerle un quote a lo que este afuera de todo eso o directamente si encuentra esos parametros no mostrar ningun [citar] en la respuesta .

Última edición por Snake nS; 24/05/2007 a las 18:41