Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/11/2012, 10:29
fr1974
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 16 años, 5 meses
Puntos: 20
Exclamación Reemplazar caracteres por una función o include

Tengo un string o cadena por ejemplo :

Cita:
Hola a todos como estaís [textbox-texto resaltado-500-200] proximamente tendreís más noticias [galeria-ruta_galeria-500-200]

Lo que estoy intentando hacer y ya ni se que más vueltas darle , es transformar los corchetes con sus contenidos a galerías o áreas diferenciadas , en el caso de la galería se incluiría una función que leyese la propia galería y la mostrase y en el otro caso un area de texto remarcada

La cuestión es como se puede utilizar la función str_replace para sustituir caracteres por funciones o similar , he utilizado preg_replace_callback y preg_match_all pero no funcionan o si pero alteran lo que es el texto normal poniendo al principio las galerías y despues el texto en vez de ir sustituyendo en el orden adecuado


Código PHP:

 <?php
$string 
"Hola todos os presento una nueva galeria  [galt~imagenes/articulos~100~100~4]  Aqui otra más [gal~imagenes/productos~100~100~3]";

$regex "/\[(.*?)\]/";
preg_match_all($regex$string$matches);

for(
$i=0$i<count($matches[1]);$i++)
{
$match $matches[1][$i];
$array explode('~'$match);

//$newValuet="gal("".$array[1]."","".$array[2]."","".$array[3]."","".$array[4]."")";

$newValue="gal(".$array[1].",".$array[2].",".$array[3].",".$array[4].")";


$string str_replace($matches[0][$i],$newValue,$string);

}

echo 
$string;
?>

El problema estaría en sustituir los datos que coinciden por las funciones :

$string = str_replace($matches[0][$i],$newValue,$string);


O sino alguna alternativa yo ya le he dado mil vueltas pero no veo forma , una cosa es sustituir caracteres pero otra como poner galerías por ejemplo para mostrar lo que queremos o insertar una función , debe haber alguna forma de mostrar una función al detectar un caracter

Rogaría eso si que como en otros posts pasásemos a lo práctico , he mirado todas las funcionalidades y las he probado de mil maneras y no dudo que se pueda hacer , pero al menos a mi se me escapa con las expresiones regulares como hacerlo , muchas gracias


Muchas gracias a todos