Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Código PHP a cadena

Estas en el tema de Código PHP a cadena en el foro de PHP en Foros del Web. buenas amigos les traigo una pregunta es posible convertir un codigo php a string el ejemplo seria tener un php con este contenido Cita: if($dato==0){ ...
  #1 (permalink)  
Antiguo 19/07/2014, 15:15
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 9 meses
Puntos: 28
Pregunta Código PHP a cadena

buenas amigos les traigo una pregunta es posible convertir un codigo php a string

el ejemplo seria tener un php con este contenido

Cita:
if($dato==0){
echo"{lang.esdato}: ".$dato;
}else{
echo"{lang.noesdato}: ".$dato;
}
como verán es algo básico el resultado seria la impresion por pantalla de una de las dos versiones pero no quiero que aun se imprima.
quisiera guardar el resultado logico en una variable tipo string para luego poder traducir las claves de idioma {lang.esdato} o {lang.noesdato} al idioma en curso...

Cita:
este es el dato: 0

This is the data: 0

el dato no es igual a: 0

the data is not equal to 0
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #2 (permalink)  
Antiguo 19/07/2014, 17:07
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Respuesta: codigo php a srting

francamente no entendi nada de lo que buscas hacer.... guiandome por el titulo para convertir un codigo php en string basta con colocarlo dentro de comillas simples, por ejemplo

Código PHP:
Ver original
  1. $my_strubg = '<?php echo "hola"; '>';

Pero estoy seguro eso ya lo sabias y no es lo que buscas.
  #3 (permalink)  
Antiguo 19/07/2014, 17:31
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 1 mes
Puntos: 67
Respuesta: codigo php a srting

Prueba usando EOD:

Código PHP:
$Salida = <<<EOD
if($dato==0){
echo"{lang.esdato}: ".$dato;
}else{
echo"{lang.noesdato}: ".$dato;
}

EOD; 
Si haces un echo a $Salida te debe de salir el código.

Edito: Acabo de hacer las pruebas y las variables no las muestra como tal.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net

Última edición por bookmaster; 19/07/2014 a las 17:39
  #4 (permalink)  
Antiguo 19/07/2014, 17:52
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 9 meses
Puntos: 28
Respuesta: codigo php a srting

gracias a ambos pero no soluciono tal como me indicas bookmaster al utilisar tu idea me imprime el codigo tambien:

Código HTML:
Ver original
  1. if(0==0){ echo"{lang.esdato}: ".0; }else{ echo"{lang.noesdato}: ".0; }

como si fuera el html salida... lo que quiero es que no imprima la parte logica si no que la ejecute y el resultado de la parte logica que la guarde en la variable.

intentandolo tendria que quedar en algo asi como :

Código PHP:
Ver original
  1. <?php
  2. $dato=0;
  3. if($dato==0){
  4. $Salida = <<<EOD
  5. echo"{lang.esdato}: ".$dato;
  6. EOD;
  7. }else{
  8. $Salida = <<<EOD   
  9. echo"{lang.noesdato}: ".$dato;
  10. EOD;
  11. }
  12. echo"$Salida";
  13. ?>

lo cual me da error:

Cita:
Parse error: syntax error, unexpected '<<' (T_SL) in C:\xampp\htdocs\demo\index.php on line 4
y si este lograce funcionar me imprimiria los :

Cita:
echo"{lang.noesdato}: ".0;
lo cual tampoco es lo deseado la idea es que solo se guarde lo siguiente dentro de la variable


Cita:
{lang.noesdato}: 0
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #5 (permalink)  
Antiguo 19/07/2014, 18:11
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 1 mes
Puntos: 67
Respuesta: codigo php a srting

Creo que ya se lo que tratas de hacer, algo parecido al Smarty, tendría que mirar un poco más el tema de que guardes el valor en un array y después usando list por ejemplo, asignarle el nombre.

Y crear una función que "reemplace" las llaves por el nombre de la variable, al menos esa es la idea.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #6 (permalink)  
Antiguo 19/07/2014, 18:31
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 9 meses
Puntos: 28
Respuesta: codigo php a srting

no te preocupes por el script para reemplazar

hago un include del array y uso los script:

Código PHP:
Ver original
  1. global $langArray;
  2. $langArray              =   array (
  3.     /*Pagina en Español*/
  4.     'lang'              =>  'es',
  5.     'lang.noesdato'     =>  'No es Dato de: ',
  6. );
  7.  
  8. $diccionario = $langArray;

Código PHP:
Ver original
  1. function MergeWeb($temp,$diccionario){
  2.         foreach ($diccionario as $clave=>$valor) {
  3.             $temp = str_replace('{'.$clave.'}', $valor, $temp);
  4.         }
  5.         $WebSite=$temp;
  6.         return $WebSite;
  7.     }

se supone que $temp es la variable que guarda el resultado de la seccion logica que debe devolver el: {lang.noesdato}: 0

y luego al imprimirse la traducción debe quedar: No es Dato de: 0

la idea es como guardar el resultado de una seccion logica en una variable


Cita:
$variable .=

Seccion logica 1

$variable .=

Seccion logica 2
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #7 (permalink)  
Antiguo 20/07/2014, 05:09
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 15 años, 11 meses
Puntos: 326
Respuesta: codigo php a srting

Pues, segun el primer post, es esto:

Código PHP:

if($dato==0){
$var_laquesea "{lang.esdato}: ".$dato;
}else{
$var_laquesea "{lang.noesdato}: ".$dato;

Y despues haces lo q quieras con esa var... no?
__________________
>> Eleazan's Source
>> @Eleazan
  #8 (permalink)  
Antiguo 20/07/2014, 10:18
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 9 meses
Puntos: 28
Respuesta: codigo php a srting

listo gracias amigo

sera posible concatenar de esta manera:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $var_laquesea='';
  4.  
  5. if($dato==0){
  6. $var_laquesea .= "{lang.esdato}: ".$dato;
  7. }else{
  8. $var_laquesea .= "{lang.noesdato}: ".$dato;
  9. }
  10. if($dato==1){
  11. $var_laquesea .= "{lang.esdato}: ".$dato;
  12. }else{
  13. $var_laquesea .= "{lang.noesdato}: ".$dato;
  14. }
  15. if($dato==2){
  16. $var_laquesea .= " ?>
  17.  
  18.                             <form name="language" method="post" action="" class="containerlang">
  19.                                 <select class="form-control lenguage" onChange="document.language.submit()" name="lang">
  20.                                     <option selected="selected">{lang.selected}</option>
  21.                                     <option value="es">{lang.es}</option>
  22.                                     <option value="en">{lang.en}</option>
  23.                                 </select>
  24.                             </form>
  25.  
  26.  
  27. <?php
  28. ";
  29. }else{
  30. $var_laquesea .= "{lang.noesdato}: ".$dato;
  31. }
  32. ?>

mesclando un poco de html con el php...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #9 (permalink)  
Antiguo 20/07/2014, 10:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: codigo php a srting

Claro que es posible, sólamente ten cuidado con las comillas y escapa las comilas dobles si estas usando dobles como delimitador, o las simples si estas usando simples como delimitador.

Saludos.
  #10 (permalink)  
Antiguo 20/07/2014, 11:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: codigo php a srting

Además no tiene caso que concatenes ?> o <?php porque sencillamente no hace falta, no post-evaluarás ningún código y por ende es innecesario.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 20/07/2014, 16:43
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 9 meses
Puntos: 28
Respuesta: codigo php a srting

como asi que no post evaluare???

si te refieres a colocar mas codigo php creo que si lo hare ya que la idea de esto es armar un menu segun privilegios al igual que mucho del contenido de la web...

la idea de usar ?> o <?php es para evitar el uso de comillas escapadas ya que son muchassssss...

Cita:
Parse error: syntax error, unexpected '200' (T_LNUMBER) in C:\xampp\htdocs\demo\index.php on line 15
y hay me encuentro con otro inconveniente al usar:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $var_laquesea='';
  4. $dato='2';
  5.  
  6. if($dato==0){
  7. $var_laquesea .= "{lang.esdato}: ".$dato;
  8. }
  9. if($dato==1){
  10. $var_laquesea .= "{lang.esdato}: ".$dato;
  11. }
  12. if($dato==2){
  13. $var_laquesea .= " ?>
  14.  
  15.            <table width="200" border="1">
  16.                 <tr>
  17.                     <td>&nbsp;</td>
  18.                     <td>&nbsp;</td>
  19.                     <td>&nbsp;</td>
  20.                 </tr>
  21.                 <tr>
  22.                     <td>&nbsp;</td>
  23.                     <td>Hola mundo</td>
  24.                     <td>&nbsp;</td>
  25.                 </tr>
  26.                 <tr>
  27.                     <td>&nbsp;</td>
  28.                     <td>&nbsp;</td>
  29.                     <td>&nbsp;</td>
  30.                 </tr>
  31.             </table>
  32. <?php        
  33. ";
  34. }
  35.  
  36. echo $var_laquesea;
  37. ?>
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #12 (permalink)  
Antiguo 20/07/2014, 17:25
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Respuesta: codigo php a srting

Si tienes muchas comillas dobles solo utiliza comillas simples, siempre tienes la opcion de alternarlas segun el contenido.

o en todo caso has lo que te recomendo @bookmaster

puedes usar
Código PHP:
Ver original
  1. $tmp = <<<CONTENT
  2. aqui todo tu html
  3. CONTENT;
  4. $var_laquesea .= $tmp;

De esta forma no te tienes que acongojar por las comillas dobles o simples
  #13 (permalink)  
Antiguo 20/07/2014, 17:36
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 9 meses
Puntos: 28
Respuesta: codigo php a srting

ya dije que la solución de @bookmaster no funciona correctamente supongo que no has leído el post...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #14 (permalink)  
Antiguo 20/07/2014, 19:26
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: Código PHP a cadena

Creo que estás equivocado en cuanto a la forma de crear un sitio multi-idioma, creo que te había dado alguna sugerencia al respecto en otro tema, pero vamos de nuevo:

english.php
Código PHP:
Ver original
  1. $lang = array(
  2.       'hola-mundo' => 'Hello world!',
  3.       'otra-frase' => 'Here you type another phrase',
  4. );

espanol.php
Código PHP:
Ver original
  1. $lang = array(
  2.       'hola-mundo' => 'Hola mundo!',
  3.       'otra-frase' => 'Aquí tecleas otra frase',
  4. );

plantilla.php
Código HTML:
Ver original
  1. <h1>{hola-mundo}</h1>
  2. <div>{otra-frase}</div>

Luego sólo necesitas usar una expresión regular para obtener todas las frases en la plantilla y reemplazarlas con el valor especificado en el archivo de idioma actual, usando str_replace.
__________________
- León, Guanajuato
- GV-Foto
  #15 (permalink)  
Antiguo 20/07/2014, 19:40
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 9 meses
Puntos: 28
Respuesta: Código PHP a cadena

triby muchas gracias por reiterar eso, pero no es el tema sobre el que pregunto ya que para hacer la sustitucion de

Código PHP:
Ver original
  1. <h1>{hola-mundo}</h1>
  2. <div>{otra-frase}</div>

hay que usar
Código PHP:
Ver original
  1. get_content()
...

lo cual no me permite usar funciones logicas dentro de la plantilla.

por ello he optado por armar el menu antes de hacer cualquier traduccion de texto...

por ello el hecho de querer armas el menu y luego pasarlo a una variable.
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #16 (permalink)  
Antiguo 20/07/2014, 19:44
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: Código PHP a cadena

Ok, otra opción para ir armando textos "al vuelo" es:

Código PHP:
Ver original
  1. $texto = <<<EOT
  2.      <h1>{$lang['hola-mundo']}</h1>
  3.      <div>{$lang['otra-frase']}</div>
  4. EOT;
__________________
- León, Guanajuato
- GV-Foto
  #17 (permalink)  
Antiguo 20/07/2014, 20:30
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 9 meses
Puntos: 28
Respuesta: Código PHP a cadena

nop tampoco trabaja por que me imprime los

Cita:
if($dato==0){Contenido}
como si fueran texto y no ejecuta la parte logica.

la idea era concatenar el texto de la siguiente forma:

Código PHP:
Ver original
  1. if($dato==2){
  2. $var_laquesea .= " ?>
  3.  
  4.             <table width="200" border="1">
  5.                 <tr>
  6.                     <td>&nbsp;</td>
  7.                     <td>&nbsp;</td>
  8.                     <td>&nbsp;</td>
  9.                 </tr>
  10.                 <tr>
  11.                     <td>&nbsp;</td>
  12.                     <td>Hola mundo</td>
  13.                     <td>&nbsp;</td>
  14.                 </tr>
  15.                 <tr>
  16.                     <td>&nbsp;</td>
  17.                     <td>&nbsp;</td>
  18.                     <td>&nbsp;</td>
  19.                 </tr>
  20.             </table>
  21. <?php        
  22. ";
  23. }

de esta manera ya que sera seguido de mas código php
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #18 (permalink)  
Antiguo 20/07/2014, 20:46
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: Código PHP a cadena

Cuál es el problema de tener la lógica aparte, que es como debería hacerse, ejemplo, continuando con lo sugerido más arriba:

Código PHP:
Ver original
  1. if($logueado) {
  2.      $texto .= "<div>{$lang['bienvenido']}: {$username}</div>";
  3. } else {
  4.      $texto .= "<div><a href=\"login.php\">{$lang['inicia-sesion']}</a></div>";
  5. }
__________________
- León, Guanajuato
- GV-Foto
  #19 (permalink)  
Antiguo 20/07/2014, 21:25
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 9 meses
Puntos: 28
Respuesta: Código PHP a cadena

bueno como decía quería evitar el uso de escapar las comillas
Cita:
href=\"login.php\">
y pensé en el uso de:

Cita:
<?php
if($dato==2){
$var_laquesea .= " ?> //ESTO

<table width="200" border="1">

<tr>
<td>&nbsp;</td>
<td>Hola mundo</td>
<td>&nbsp;</td>
</tr>
</table>
<?php //ESTO
";
}
?>
pero me da error. existe alguna forma de concatenar de esta forma sin tener que escapar las comillas??
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #20 (permalink)  
Antiguo 20/07/2014, 22:47
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: Código PHP a cadena

Usa la notación HEREDOC, que fue el ejemplo que te puse con <<<EOT .... EOT;
__________________
- León, Guanajuato
- GV-Foto
  #21 (permalink)  
Antiguo 21/07/2014, 00:09
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 15 años, 11 meses
Puntos: 326
Respuesta: Código PHP a cadena

Sí. Poner comillas simples
__________________
>> Eleazan's Source
>> @Eleazan

Etiquetas: variable
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 02:47.