Foros del Web » Programando para Internet » PHP »

Reemplazar caracteres por una función o include

Estas en el tema de Reemplazar caracteres por una función o include en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 28/11/2012, 10:29
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 16 años, 4 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
  #2 (permalink)  
Antiguo 28/11/2012, 10:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Reemplazar caracteres por una función o include

De hecho estás pensando mal las cosas, no debes sustituir literalmente por el nombre de la función, tienes que ejecutarla y usar el resultado que devuelve como reemplazo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 28/11/2012, 10:51
 
Fecha de Ingreso: noviembre-2007
Mensajes: 498
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: Reemplazar caracteres por una función o include

Si pero es que también he hecho eso con preg_replace_calback , pero no hay forma de que en la función se ejecute lo qeu yo quiero porque en esa función se cargaría todo un código de galería y al parecer el sistema de callback necesita si o si return para devolver todo y es que no me sale ni a tiros


Esto es un ejemplo si hace falta pongo todo el código
Cita:

<?php

$text = " This is a test [gal~ruta~100~100] This is other test [gal~ruta2~100~100]";

function galj($matches)
{

global $text;

$exp=explode("~",$matches[1]);

$end=str_replace($matches[1],$a,$text);

if ($exp[0]=="gal")
{
$a="".$exp[1]."".$exp[2]."".$exp[3]."";
echo $a;
}


}


echo preg_replace_callback(
"/\[(.*?)\]/",
"galj",
$text);

?>


Y el resultado que da es este : ruta100100ruta2100100 This is a test This is other test ( Desordenado ) y no entiendo porque en preg_replace_callback no puedo poner más argumentos al llamar a la función y porque en la función hay que poner matches , yo entiendo que se podrá llamar a la función que tu quieres y devolver el contenido de la función según parametros pero no encuentro la forma


Muchas gracias , saludos

Etiquetas: caracteres, include, reemplazar
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:04.