Foros del Web » Programando para Internet » PHP »

Partir String y Seleccionar cachos.

Estas en el tema de Partir String y Seleccionar cachos. en el foro de PHP en Foros del Web. Hola, se hacer esto con javascript, mediante un slize, pero me interesa hacerlo con php, y necesito vuestra ayuda. El caso es que tengo en ...
  #1 (permalink)  
Antiguo 24/05/2010, 05:17
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años, 7 meses
Puntos: 1
Partir String y Seleccionar cachos.

Hola, se hacer esto con javascript, mediante un slize, pero me interesa hacerlo con php, y necesito vuestra ayuda.


El caso es que tengo en la bbdd un texto al cual accedo así $titulo.
Imaginemos que contiene el ejemplo "Hola Mundo".

Lo que quiero es a el contenido de $titulo, darle estilos CSS.

Me interesa que la primera letra de la cadena texto, es decir la H, salga con estilo 35.
Las siguientes letras hasta el espacio, es decir ola, salgan sin estilo.
y despues del espacio, lo mismo, la primera letra, es decir M, con estilo 35, y el resto sin estilo.

la cosas sería, <span class="Estilo45">H</span>ola <span class="Estilo35">M</span>undo.

Pero no se como hacerlo..

Ademas esto debe ser dinamico, si detecta un espacio, que la primera letra la ponga estilo35 y al resto nada.
Ya que si en vez de tener "Hola Mundo" tenemos "Hola Pequeño Gran Mundo", nos tiene que poner la H, P, G y M con estilo35.

Alguien me echa una mano? o Me deja una función ya echa y yo la adapto? :)


Un saludo y gracias.
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #2 (permalink)  
Antiguo 24/05/2010, 05:49
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años, 7 meses
Puntos: 40
Respuesta: Partir String y Seleccionar cachos.

Yo más o menos te puedo guiar, la función te la harás tu.

Lo primero que haría seria recoger las palabras por separado, para poder tratarlas mejor, esto lo podemos hacer con explode
Código PHP:
<?php $arrayPalabras explode(" "$string);
Con eso tendríamos un array con todas las palabras, cada elemento del array corresponde a una palabra, por lo tanto si queremos modificar todas tendríamos que recorrerlo usando foreach.

Una vez vamos recorriendo el foreach procesando palabra por palabra, lo siguiente seria seleccionar la primera letra de la palabra, lo cual podemos hacerlo con $string{0}.

$string{0} seria la primera letra, $string{1} la segunda, y así sucesivamente, una vez tenemos $letra = $string{0}, podríamos hacer $letra = "<p style=\"35\">$letra</p>".

Y ya tenemos el estilo aplicado solo a la primera letra de la palabra.

Solo tendrías que quitar el valor de la primera letra (en la variable de la palabra entera) y anidarle el valor de $letra.

Si tienes alguna duda pregunta

Un saludo
  #3 (permalink)  
Antiguo 24/05/2010, 06:36
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Partir String y Seleccionar cachos.

No me ha quedado muy claro la verdad.

Al hacer el explode " ", estamos diciendo que cada espacio, meta hasta el siguiente espacio en un array ($arrayPalabras).

Despues utilizando el foreach recorremos el array, es decir

foreach($arrayPalabras as $letras) {
$letras = $string{0};
echo "<span class=\"Estilo35\">$letras</span>
}

De esta manera tendría la primera letra de cada palabra con el estilo no? Es decir, en el ejemplo tendría H, P, G, M con estilo.

Como sigo imprimiendo el resto de las palabras?

:S
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #4 (permalink)  
Antiguo 24/05/2010, 09:30
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años, 7 meses
Puntos: 40
Respuesta: Partir String y Seleccionar cachos.

Normalmente nunca hago el código, pero como me pareció una cosa interesante me puse a hacerlo a ver si tenia algún problema al realizarlo, y todo bien.

Código PHP:
<?php
$string 
"Este texto tendr&aacute; formato despu&eacute;s de unas cuantas funciones";
$palabrasEditadas = array();

$arrayPalabras explode(" "$string);
foreach(
$arrayPalabras as $palabra){
    
$letra $palabra{0};
    
$letra "<span style=\"color: #F00; font-size: 20px\">"$letra"</span>";
    
$palabra{0} = "";
    
$palabra $letra.$palabra;
    
$palabrasEditadas[] = $palabra;
}

$nuevoString implode(" "$palabrasEditadas);
echo 
$nuevoString;
?>
Como puedes ver he seguido los pasos de arriba, a excepción de que en vez de mostrarlo, lo meto en un array y usando la función implode lo convierto de nuevo en un string.

Un saludo
  #5 (permalink)  
Antiguo 25/05/2010, 01:48
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Partir String y Seleccionar cachos.

Cita:
Iniciado por Heli0s Ver Mensaje
Normalmente nunca hago el código, pero como me pareció una cosa interesante me puse a hacerlo a ver si tenia algún problema al realizarlo, y todo bien.

Código PHP:
<?php
$string 
"Este texto tendr&aacute; formato despu&eacute;s de unas cuantas funciones";
$palabrasEditadas = array();

$arrayPalabras explode(" "$string);
foreach(
$arrayPalabras as $palabra){
    
$letra $palabra{0};
    
$letra "<span style=\"color: #F00; font-size: 20px\">"$letra"</span>";
    
$palabra{0} = "";
    
$palabra $letra.$palabra;
    
$palabrasEditadas[] = $palabra;
}

$nuevoString implode(" "$palabrasEditadas);
echo 
$nuevoString;
?>
Como puedes ver he seguido los pasos de arriba, a excepción de que en vez de mostrarlo, lo meto en un array y usando la función implode lo convierto de nuevo en un string.

Un saludo
Vaya, jejejej, muchas gracias.

De todas maneras me gustaría entender este codigo, no me gusta copiarlo y ya esta...

Aunque no lo consigo optimizar, siempre me sale el mismo titulo XD

Código PHP:
$row=mysql_fetch_array($noticias);
$titulo $row[titulo]; 

$palabrasEditadas = array();

$arrayPalabras explode(" "$titulo);
foreach(
$arrayPalabras as $palabra){
    
$letra $palabra{0};
    
$letra "<span class=\"Estilo35\">"$letra"</span>";
    
$palabra{0} = "";
    
$palabra "<span class=\"Estilo14\">"$palabra"</span>";
    
$palabra $letra.$palabra;
    
$palabrasEditadas[] = $palabra;
}

$nuevoString implode(" "$palabrasEditadas); 
Ahora en todas las noticias me sale el mismo titulo XD
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #6 (permalink)  
Antiguo 25/05/2010, 01:55
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Partir String y Seleccionar cachos.

Intento hacer un bucle para que coja un titulo, lo haga, y pase a otro y así para que no me muestre en todas las noticias el mismo titulo, pero no lo consigo.. lo he intentado de mil maneras y nada...

Iluminame !! porque no se como hacerlo! xD
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #7 (permalink)  
Antiguo 25/05/2010, 02:21
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años, 7 meses
Puntos: 40
Respuesta: Partir String y Seleccionar cachos.

Si hay algo del código que no entiendes preguntalo.

Y si no tienes ningún bucle aparte del foreach no se como quieres que te haga el proceso con más de un string, o quizás si que lo tienes, así que si lo tienes muestra todo el código.

Un saludo
  #8 (permalink)  
Antiguo 25/05/2010, 02:33
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Partir String y Seleccionar cachos.

Este es el codigo php que tengo:

Código PHP:
<?php
//Editamos el titulo para que lo muestre a nuestro gusto
$row=mysql_fetch_array($noticias);
$titulo $row[titulo];

$palabrasEditadas = array();

$arrayPalabras explode(" "$titulo);

foreach(
$arrayPalabras as $palabra){
    
$letra $palabra{0};
    
$letra "<span class=\"Estilo35\">"$letra"</span>";
    
$palabra{0} = "";
    
$palabra "<span class=\"Estilo14\">"$palabra"</span>";
    
$palabra $letra.$palabra;
    
$palabrasEditadas[] = $palabra;
}

$nuevoString implode(" "$palabrasEditadas); 


//Imprimimos los resultados.
while ($row=mysql_fetch_array($noticias))
{echo 
"<img src=\"imagenes/prueba2.png\" width=\"50\" height=\"50\">" .$nuevoString."<br><p>" .html_entity_decode($row[noticia])."</p><br><div align=\"center\" class=\"Estilo39\"> Por: ".$row[autor]." - "
      
.date("d-m-Y",$row[fecha])." - Categoria: ".$row[categoria]." </div><br><div align=\"center\"><img src=\"imagenes/separador.png\" width=\"400\" height=\"15\"></div>";
}
?>
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #9 (permalink)  
Antiguo 25/05/2010, 02:37
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años, 7 meses
Puntos: 40
Respuesta: Partir String y Seleccionar cachos.

¿Y como quieres que salga un titulo diferente cada vez? Si no usas ningún bucle para que se repita el proceso de sacar el titulo con otro string diferente.
  #10 (permalink)  
Antiguo 25/05/2010, 02:52
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Partir String y Seleccionar cachos.

Cita:
Iniciado por Heli0s Ver Mensaje
¿Y como quieres que salga un titulo diferente cada vez? Si no usas ningún bucle para que se repita el proceso de sacar el titulo con otro string diferente.
Lo he intentado pero no lo he conseguido.... que bucle tengo que utilizar? he intentado con un while y no lo he conseguido nose si porque no es con while o porque no lo he echo bien..
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #11 (permalink)  
Antiguo 25/05/2010, 02:55
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años, 7 meses
Puntos: 40
Respuesta: Partir String y Seleccionar cachos.

Con while se puede hacer cualquier cosa que pueda hacer otro bucle, y efectivamente deberías usar while, pero yo no veo el código de los títulos dentro de un bucle while, y mientras no este dentro de un bucle nunca va a hacer lo que quieres.
  #12 (permalink)  
Antiguo 25/05/2010, 03:02
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Partir String y Seleccionar cachos.

Cita:
Iniciado por Heli0s Ver Mensaje
Con while se puede hacer cualquier cosa que pueda hacer otro bucle, y efectivamente deberías usar while, pero yo no veo el código de los títulos dentro de un bucle while, y mientras no este dentro de un bucle nunca va a hacer lo que quieres.
Ya, es que lo borré porque no me salia... xDD

Con el while debería hacer esto no? ;

while ($row=mysql_fetch_array($noticias)){
$titulo = $row[titulo] }


o debería hacer algo como

while ($row=mysql_fetch_array($titulo)){
$arrayPalabras = explode(" ", $titulo); }
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.

Última edición por Flow89; 25/05/2010 a las 03:14
  #13 (permalink)  
Antiguo 25/05/2010, 03:30
 
Fecha de Ingreso: marzo-2010
Mensajes: 5
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Partir String y Seleccionar cachos.

Código PHP:
<?php
//Editamos el titulo para que lo muestre a nuestro gusto
while($row=mysql_fetch_array($noticias)){
   
$titulo $row[titulo];

   
$palabrasEditadas = array();
   
$arrayPalabras explode(" "$titulo);

   foreach(
$arrayPalabras as $palabra){
      
$letra $palabra{0};
      
$letra "<span class=\"Estilo35\">"$letra"</span>";
      
$palabra{0} = "";
      
$palabra "<span class=\"Estilo14\">"$palabra"</span>";
      
$palabra $letra.$palabra;
      
$palabrasEditadas[] = $palabra;
   }

  
$nuevoString implode(" "$palabrasEditadas); 

//Imprimimos los resultados.
   
echo "<img src=\"imagenes/prueba2.png\" width=\"50\" height=\"50\">" .$nuevoString."<br><p>" .html_entity_decode($row[noticia])."</p><br><div align=\"center\" class=\"Estilo39\"> Por: ".$row[autor]." - "
      
.date("d-m-Y",$row[fecha])." - Categoria: ".$row[categoria]." </div><br><div align=\"center\"><img src=\"imagenes/separador.png\" width=\"400\" height=\"15\"></div>";
}
?>
Tampoco era tan complicado...
  #14 (permalink)  
Antiguo 25/05/2010, 03:34
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Partir String y Seleccionar cachos.

Cita:
Iniciado por Flow89 Ver Mensaje
Ya, es que lo borré porque no me salia... xDD

Con el while debería hacer esto no? ;

while ($row=mysql_fetch_array($noticias)){
$titulo = $row[titulo] }


o debería hacer algo como

while ($row=mysql_fetch_array($titulo)){
$arrayPalabras = explode(" ", $titulo); }
Lo máximo que consigo sacar es esto como título :S

Resource id #10
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #15 (permalink)  
Antiguo 25/05/2010, 03:35
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años, 7 meses
Puntos: 40
Respuesta: Partir String y Seleccionar cachos.

Pon el código que tienes ahora
  #16 (permalink)  
Antiguo 25/05/2010, 03:50
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Partir String y Seleccionar cachos.

Cuando me sale lo de resource tengo este codigo:

He conseguido de otra manera, tambien sacar titulo, pero para todas sale el mismo, con este codigo.

Código PHP:
<?php
//Editamos el titulo para que lo muestre a nuestro gusto
while ($row=mysql_fetch_array($prueba)){
$arrayPalabras explode(" "$prueba); }

$palabrasEditadas = array();

foreach(
$arrayPalabras as $palabra){
    
$letra $palabra{0};
    
$letra "<span class=\"Estilo35\">"$letra"</span>";
    
$palabra{0} = "";
    
$palabra "<span class=\"Estilo14\">"$palabra"</span>";
    
$palabra $letra.$palabra;
    
$palabrasEditadas[] = $palabra;
}

$nuevoString implode(" "$palabrasEditadas); 


//Imprimimos los resultados.
while ($row=mysql_fetch_array($noticias))
{echo 
"<img src=\"imagenes/prueba2.png\" width=\"50\" height=\"50\">" .$nuevoString."<br><p>" .html_entity_decode($row[noticia])."</p><br><div align=\"center\" class=\"Estilo39\"> Por: ".$row[autor]." - "
      
.date("d-m-Y",$row[fecha])." - Categoria: ".$row[categoria]." </div><br><div align=\"center\"><img src=\"imagenes/separador.png\" width=\"400\" height=\"15\"></div>";
}
?>
Por mas que lo estoy intentado no se me ocurre la forma...

PD: Me va fatal la pagina :S
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #17 (permalink)  
Antiguo 25/05/2010, 03:58
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años, 7 meses
Puntos: 40
Respuesta: Partir String y Seleccionar cachos.

$arrayPalabras = explode(" ", $prueba);

¿Por que explode $prueba?¿Que es lo que contiene prueba?
  #18 (permalink)  
Antiguo 25/05/2010, 04:16
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Partir String y Seleccionar cachos.

$prueba=mysql_query("select titulo from noticias",$connect);
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #19 (permalink)  
Antiguo 25/05/2010, 04:30
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años, 7 meses
Puntos: 40
Respuesta: Partir String y Seleccionar cachos.

Y eso es el string del titulo???
  #20 (permalink)  
Antiguo 25/05/2010, 04:45
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Partir String y Seleccionar cachos.

Perdona, con lo que sale el resource ID #10 es con ese codigo, con este otro

Código PHP:
<?php
//Editamos el titulo para que lo muestre a nuestro gusto
while ($row=mysql_fetch_array($prueba)){
$titulo$row[titulo];
$arrayPalabras explode(" "$titulo); }

$palabrasEditadas = array();

foreach(
$arrayPalabras as $palabra){
    
$letra $palabra{0};
    
$letra "<span class=\"Estilo35\">"$letra"</span>";
    
$palabra{0} = "";
    
$palabra "<span class=\"Estilo14\">"$palabra"</span>";
    
$palabra $letra.$palabra;
    
$palabrasEditadas[] = $palabra;
}

$nuevoString implode(" "$palabrasEditadas); 


//Imprimimos los resultados.
while ($row=mysql_fetch_array($noticias))
{echo 
"<img src=\"imagenes/prueba2.png\" width=\"50\" height=\"50\">" .$nuevoString."<br><p>" .html_entity_decode($row[noticia])."</p><br><div align=\"center\" class=\"Estilo39\"> Por: ".$row[autor]." - "
      
.date("d-m-Y",$row[fecha])." - Categoria: ".$row[categoria]." </div><br><div align=\"center\"><img src=\"imagenes/separador.png\" width=\"400\" height=\"15\"></div>";
}
?>
Sale el título pero siempre el mismo.

PD: Lo siento es que me iba fatal la página :S
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #21 (permalink)  
Antiguo 25/05/2010, 04:46
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años, 7 meses
Puntos: 40
Respuesta: Partir String y Seleccionar cachos.

Observa el código que te pusieron arriba
  #22 (permalink)  
Antiguo 25/05/2010, 04:53
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Partir String y Seleccionar cachos.

Vale ya lo he conseguido, he sacado fuera el explode de $arrayPalabras... aunque yo juraría que lo había echo antes y no me había salido, pero bueno ahora me funciona :S

Os dejo el codigo final; (Con la función buena no la de prueba, y con los html_entity_decode para las tildes y demás que me daban error en títulos y categorias).

Código PHP:
<?php
//Editamos el titulo para que lo muestre a nuestro gusto
while($row=mysql_fetch_array($noticias)){
   
$titulo html_entity_decode($row[titulo]);

   
$palabrasEditadas = array();
   
$arrayPalabras explode(" "$titulo);

   foreach(
$arrayPalabras as $palabra){
      
$letra $palabra{0};
      
$letra "<span class=\"Estilo35\">"$letra"</span>";
      
$palabra{0} = "";
      
$palabra "<span class=\"Estilo14\">"$palabra"</span>";
      
$palabra $letra.$palabra;
      
$palabrasEditadas[] = $palabra;
   }

  
$nuevoString implode(" "$palabrasEditadas); 

//Imprimimos los resultados.
   
echo "<img src=\"imagenes/prueba2.png\" width=\"50\" height=\"50\">" .$nuevoString."<br><p>" .html_entity_decode($row[noticia])."</p><br><div align=\"center\" class=\"Estilo39\"> Por: ".$row[autor]." - "
      
.date("d-m-Y",$row[fecha])." - Categoria: ".html_entity_decode($row[categoria])." </div><br><div align=\"center\"><img src=\"imagenes/separador.png\" width=\"400\" height=\"15\"></div>";
}
?>

EDITO: Vale ahora veo el codigo XD. Joder, juraría que ese mensaje antes no me salía! aunque me cargaba tan sumamente mal la página que alomejor ni lo he visto.. nose :S
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.

Etiquetas: partir, seleccionar, string
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 14:09.