Autor Tema: Reto #1 - Dividir Texto  (Leído 6749 veces)

Conectado naveda

  • Administrador General
  • PHPero Master
  • *****
  • Mensajes: 2.282
  • Karma: 165
  • Sexo: Masculino
    • Ver Perfil
    • naveda.me
Reto #1 - Dividir Texto
« en: 31 de Octubre de 2006, 22:43:44 pm »
Hola,
Desde PHPeros queremos proponerte un reto de dificultad SENCILLA.

El reto consiste en dividir en oraciones el siguiente texto, mediante PHP:

Citar
Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición. La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live. Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.

Debes enumerar cada oracion dividida por puntos en el texto. El resultado debería ser:
Citar
1.- Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición.
2.- La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live.
3.- Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.

Tambien debes mostrar el numero de oraciones que se han dividido, por ejemplo en este caso sería:
Citar
Nº de Oraciones: 3

Pistas:
  • Usa la funcion explode();

Cualquier pregunta o duda para crear el codigo no dudes en realizarla ;)
PD. Claramente..., no pidas el codigo ya que serás descalificado.
Por favor, leete las Normas


Comunidad PHPeros

Reto #1 - Dividir Texto
« en: 31 de Octubre de 2006, 22:43:44 pm »

Desconectado Raken

  • PHPero Avanzado
  • ****
  • Mensajes: 297
  • Karma: 30
  • Sexo: Masculino
    • Ver Perfil
Re: Reto #1 - Dividir Texto
« Respuesta #1 en: 01 de Noviembre de 2006, 02:09:46 am »
Bueno... parece que soy el primero en contestar. Esto podría dar muchas pistas a los demás usuarios, aunque espero que no tenga por qué ser así.

En cuanto a la dificultad, no lo calificaría de sencillo. Yo no sé muy bien cómo sería, pero voy a mojarme:


<?
$texto "Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición. La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live. Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.";

$division explode ("."$texto);

$numero 0;

$numero++;
echo 
$numero.".- ".$division[$numero-1]."\n";

$numero++;
echo 
$numero.".- ".$division[$numero-1]."\n";

$numero++;
echo 
$numero.".- ".$division[$numero-1]."\n";

echo 
"Nº de Oraciones: ".$numero;
?>

Raken - Moderador para PHP y HTML

Desconectado Ishamato

  • PHPero Avanzado
  • ****
  • Mensajes: 346
  • Karma: 3
  • Sexo: Masculino
  • PHPero adicto
    • Ver Perfil
Re: Reto #1 - Dividir Texto
« Respuesta #2 en: 08 de Noviembre de 2006, 20:50:04 pm »
Bueno.. pues voy a intentarlo aunque no se hacer la segunda parte xD

//Creo una variable que contiene el texto que quiero dividir
<?PHP
$texto 
"Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición. La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live. Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.";
$dividir explode ("$texto");
//Le digo que la variable dividir divida (explode) la variable texto
$numero 3;
echo 
"Nº de Oraciones: "$numero;
?>

Bueno aquí dejo mi respuesta, una vez publicada, puedo mejorarla?  :-\ Esque creo que me e dejado varias cosas como separarlo por "." que no se hacerlo.
PDT: Ahora que e visto el de Raken lo entiendo, pero mi código es este, y no es plan de hacer trampas ;)

<? echo "Aprendiendo y descubriendo poco a poco"; ?>

Desconectado Raken

  • PHPero Avanzado
  • ****
  • Mensajes: 297
  • Karma: 30
  • Sexo: Masculino
    • Ver Perfil
Re: Reto #1 - Dividir Texto
« Respuesta #3 en: 08 de Noviembre de 2006, 21:15:45 pm »
Detecto cierto copiar y pegar...  xD

Citar
<?PHP
$texto 
"Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición. La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live. Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.";
$dividir explode ("$texto");
//Le digo que la variable dividir divida (explode) la variable texto
$numero 3;
echo 
"Nº de Oraciones: "$numero;
?>

Para empezar, hay mil formas de hacerlo, no hacía falta que lo hicieses como yo, pero da igual.  ;D

En realidad es incorrecto. 

Citar
$dividir explode("$texto");

La función explode, recorta el texto en cada "palabra clave". Por ejemplo, yo puse un punto, y entonces recorta cada vez que encuentra un punto. Al final he añadido $texto para decirle que lo aplique ahí.

Citar
$dividir explode("."$texto);

El número que yo puse no era el número de recortes que tenía que hacer. Era una variable para mostrar el  1.-  2.- y el 3.- que pedía Naveda en el enunciado. Y además lo usaba para decir qué parte mostrar.

Por ejemplo:

$numero 1//El numero es 1 para este ejemplo

echo "$numero"// 1
echo ".-"// 1.-
echo $division[$numero];


Hemos dicho que numero era 1. Entonces mostrara la division 1, que es la primera parte del texto (hasta el primer punto). Y así succesivamente.

$numero++;  lo que hace es sumarle 1 al número. Si antes teníamos un 1, ahora tenemos un dos. Y así todo el rato.

----------------

Puede que te preguntes por qué he usado la resta $division[$numero-1], teniendo ya los números 1, 2 y 3.

El número me interesaba que fuese 1, luego 2 y luego 3. Pero para la división del texto... no vale decir parte 1, parte 2 y parte 3. ¿Por qué no? Porque PHP empieza a contar desde 0. Entonces la primera parte es 0. Así que relativamente las partes serían 0, 1 y 2.

Por eso cuando tengo un 1, lo muestro para la frase (1.-) pero luego le resto 1 para poner la parte 0  $division[0];

Y así con cada partición.  ;)


¿Hacía falta usar variables para cada número?

Pues no. Podría haberlo hecho directamente sin variables y sería lo mismo:

<?
$texto 
"Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición. La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live. Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.";

$division explode ("."$texto);

echo 
"1.- ".$division[0]."\n";

echo 
"2.- ".$division[1]."\n";

echo 
"3.- ".$division[2]."\n";

echo 
"Nº de Oraciones: 3";
?>



« Última modificación: 08 de Noviembre de 2006, 21:23:20 pm por Raken »
Raken - Moderador para PHP y HTML

Desconectado Ishamato

  • PHPero Avanzado
  • ****
  • Mensajes: 346
  • Karma: 3
  • Sexo: Masculino
  • PHPero adicto
    • Ver Perfil
Re: Reto #1 - Dividir Texto
« Respuesta #4 en: 08 de Noviembre de 2006, 23:44:18 pm »
Ok ^^
Muchas gracias :P
PDT: Solo copié el texto que nos dio NaVeDa ;) (Ahora ya entiendo esta funcion :P)

<? echo "Aprendiendo y descubriendo poco a poco"; ?>

Desconectado DcK

  • PHPerit@
  • *
  • Mensajes: 26
  • Karma: 0
    • Ver Perfil
Re: Reto #1 - Dividir Texto
« Respuesta #5 en: 10 de Noviembre de 2006, 18:03:22 pm »
Al solo ver el reto no tenia ni la mas pvt4 idea de lo que c trataba xD... aunque si conocia la funcion explode pero no sabia que se podian hacer tantas cosas con ella... xD,, weno raken grax... esto nunk c m va a olvidar
Kaoz MC

Desconectado Drek

  • PHPer@ Fijo
  • ***
  • Mensajes: 193
  • Karma: 0
  • Sexo: Masculino
    • Ver Perfil
    • radiogoods
Re: Reto #1 - Dividir Texto
« Respuesta #6 en: 10 de Noviembre de 2006, 18:39:43 pm »
se yo tambien la e entendido :) gracias raken

Desconectado Pc-Admin

  • PHPer@ Fijo
  • ***
  • Mensajes: 118
  • Karma: 3
  • Sexo: Masculino
    • Ver Perfil
Re: Reto #1 - Dividir Texto
« Respuesta #7 en: 11 de Noviembre de 2006, 11:06:30 am »
Estos retos estan wapos, y como veo sirven de mucho :P:P
Todo en esta vida, es practicar.

Desconectado Drek

  • PHPer@ Fijo
  • ***
  • Mensajes: 193
  • Karma: 0
  • Sexo: Masculino
    • Ver Perfil
    • radiogoods
Re: Reto #1 - Dividir Texto
« Respuesta #8 en: 12 de Noviembre de 2006, 22:33:39 pm »
pero que significa "\n"; exactamente? si me lo respondeis mejor :D

Desconectado Raken

  • PHPero Avanzado
  • ****
  • Mensajes: 297
  • Karma: 30
  • Sexo: Masculino
    • Ver Perfil
Re: Reto #1 - Dividir Texto
« Respuesta #9 en: 13 de Noviembre de 2006, 00:02:08 am »
Se utiliza \n para hacer saltos de línea.

Por ejemplo tenemos esta frase:

Citar
Microsoft actualizará su plataforma de juegos Xbox 360

Si la pusiéramos así:

Citar
Microsoft actualizará\n su plataforma\n de juegos Xbox 360

El resultado sería:

Citar
Microsoft actualizará
 su plataforma
de juegos Xbox 360
Raken - Moderador para PHP y HTML

Desconectado Raken

  • PHPero Avanzado
  • ****
  • Mensajes: 297
  • Karma: 30
  • Sexo: Masculino
    • Ver Perfil
Re: Reto #1 - Dividir Texto
« Respuesta #10 en: 13 de Noviembre de 2006, 00:09:13 am »
Por cierto, yo puse el código de tal forma que ya sabíamos que iban a ser 3 frases. Pero si no se sabe el número, sería con un bucle:

<?
$texto 
"Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición. La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live. Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.";

$division explode ("."$texto);

$cuantasfrases count($division);

$numero 0;

for (
$i=0$i<=$cuantasfrases$i++) {

echo 
$i+1.".- ".$division[$i]."\n";
$numero++;
}

echo 
"Nº de Oraciones: ".$numero;
?>

« Última modificación: 13 de Noviembre de 2006, 00:12:00 am por Raken »
Raken - Moderador para PHP y HTML

Desconectado BLISZ

  • PHPerit@
  • *
  • Mensajes: 38
  • Karma: 7
  • Sexo: Masculino
    • Ver Perfil
Re: Reto #1 - Dividir Texto
« Respuesta #11 en: 02 de Enero de 2007, 14:27:37 pm »
<?
$texto 
"Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición. La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live. Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.";

$division explode ("."$texto);

for(
$i=1;$i<count($division);$i++)
	
echo 
$i." - ".$division[$i-1]."<br />";
echo 
$i-." divisiones";
?>


El problema aqui es que el texto termina ocn un punto, entonces al hacer el explode con el simbolo del punto crea al final un elemento nuevo en el array que está vacío. Es la unica "dificultad" por llamarlo así.
Empty your mind, be formless, shapeless — like void*. If you put an int into a void*, it becomes the int. You put float into a void* it becomes the float. You put in a char it becomes the char. Now, void* can flow or it can overflow. Be void* my friend.

Desconectado FeDe

  • PHPero Avanzado
  • ****
  • Mensajes: 448
  • Karma: 35
  • Sexo: Masculino
  • BaDyDj -> ¡Mi Stylo, Mi ViDa!
    • Ver Perfil
Re: Reto #1 - Dividir Texto
« Respuesta #12 en: 07 de Enero de 2007, 02:42:56 am »
Bueno me apunto al reto jeje :P

<?

$t 
"Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición. La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live. Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.";

$div explode(".",$t);

$i 0;
foreach(
$div as $frase) {
$i++;
echo 
"<b>" $i "-.</b> " $frase "<br>";
}

?>


Bueno he utilizado foreach, que la aprendí a utilizar pero medianamente, creo que va pero probarlo por sí acaso (si quereis ehh :P), foreach es semejante a for pero mira cada division :P

Venga,
Un Saludo,
FeDe.
« Última modificación: 07 de Enero de 2007, 16:49:15 pm por naveda »
Sin Firma me haces una? :P

Desconectado xmc254

  • PHPer@ Fijo
  • ***
  • Mensajes: 159
  • Karma: -3
  • Sexo: Masculino
    • Ver Perfil
    • Zona-Djs
Re: Reto #1 - Dividir Texto
« Respuesta #13 en: 07 de Enero de 2007, 18:08:03 pm »
nave, yo tambien mapunto al reto, cuando acabe el codigo lo posteare editando este mensaje
php & mysql

Desconectado Raken

  • PHPero Avanzado
  • ****
  • Mensajes: 297
  • Karma: 30
  • Sexo: Masculino
    • Ver Perfil
Re: Reto #1 - Dividir Texto
« Respuesta #14 en: 12 de Enero de 2007, 16:00:04 pm »
Bueno me apunto al reto jeje :P

<?

$t 
"Microsoft actualizará su plataforma de juegos Xbox 360 de forma gratuita a través de Internet para permitir entre otras cosas una resolución de 1080 píxeles, considerada de alta definición. La actualización incorpora 85 características nuevas y se puede descargar a partir de este martes a través de una cuenta Xbox Live. Las mejoras van destinadas a la reproducción de vídeo en alta definición, a facilitar la actualización y gestión de los juegos en red Arcade, entre otras posibilidades.";

$div explode(".",$t);

$i 0;
foreach(
$div as $frase) {
$i++;
echo 
"<b>" $i "-.</b> " $frase "<br>";
}

?>


Bueno he utilizado foreach, que la aprendí a utilizar pero medianamente, creo que va pero probarlo por sí acaso (si quereis ehh :P), foreach es semejante a for pero mira cada division :P

Venga,
Un Saludo,
FeDe.

Está bien, excepto por la variable $i, que empiezas a contar desde 1. Le has asignado el valor 0, pero cuando empieza el bucle foreach lo primero que haces es sumarle uno, con lo cual empiezas desde 0+1=1.

Para mostrar las frases, debes empezar desde la primera partición, que es cero.

NO:  frase[1], frase[2], frase[3]

SI:  frase[0], frase[1], frase[2]
Raken - Moderador para PHP y HTML