Foros del Web » Programando para Internet » PHP »

separar las palabras por el numero de letras con php

Estas en el tema de separar las palabras por el numero de letras con php en el foro de PHP en Foros del Web. hola amigos, dece hacer un filtro que tome un texto y separe las palabras por el numero de letras, e buscado informacion en internet pero ...
  #1 (permalink)  
Antiguo 14/02/2009, 10:02
 
Fecha de Ingreso: enero-2009
Ubicación: en la casa
Mensajes: 223
Antigüedad: 15 años, 9 meses
Puntos: 3
hola amigos, dece hacer un filtro que tome un texto y separe las palabras por el numero de letras, e buscado informacion en internet pero no encuentro nada parecido, si alguien tiene al gun codigo o algo, gracias

lei sobre la funcion strlen que regresa el numero de la cantidad de letras de un palabra, hay alguna funcion que separe las palabras por el numero de letras

creo que la respuesta a mi problema esta aqui, el problema es que esta en ingles, aguien podria traducirme:
gracias

la funcion file_get_contents coge todo el contenido del texto, file saca el contenido linea paor linea, pero como hacer para que coja palabra por palabra (tendria que detectar los espacio)

Última edición por GatorV; 14/02/2009 a las 17:05
  #2 (permalink)  
Antiguo 14/02/2009, 15:29
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: separar las palabras por el numero de letras con php

para eso usas explode:

Código php:
Ver original
  1. // Primero obtienes todo el archivo
  2. $str = file_get_contents('archivo.txt');
  3.  
  4. // Eliminas espacios innecesarios antes y despues del texto:
  5. $str = trim($str);
  6.  
  7. // Reemplazas saltos de linea y espacios multiples por un solo caracter de espacio:
  8. $str = preg_replace("/\s\s+/", ' ', $str);
  9.  
  10. // Obtienes todas las palabras en una matriz (array)
  11. $palabras = explode(' ', $str);

Por cierto, en casi todas las paginas del manual de PHP puedes seleccionar el idioma arriba a la izquierda, donde dice view this page in.
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 14/02/2009 a las 15:30 Razón: Agregar trim()
  #3 (permalink)  
Antiguo 14/02/2009, 17:22
 
Fecha de Ingreso: enero-2009
Ubicación: en la casa
Mensajes: 223
Antigüedad: 15 años, 9 meses
Puntos: 3
Respuesta: separar las palabras por el numero de letras con php

gracias Triby,con tu ayuda cree el siguiente codigo para que lo usen si necesitan:
Código PHP:
$str file_get_contents('direcciones.txt');
$str trim($str);
$str preg_replace("/\s\s+/"' '$str);
$a explode(' '$str);
$x 17
$count count($a);
for (
$row 0$row $count $row++) {
$cadena strlen($a["$row"]);
    if(
$cadena == $x){
    echo 
$a["$row"]."<br>";
    }

donde x es numero de letras que debe tener una palabras

salu2
  #4 (permalink)  
Antiguo 14/03/2009, 13:13
 
Fecha de Ingreso: enero-2009
Ubicación: en la casa
Mensajes: 223
Antigüedad: 15 años, 9 meses
Puntos: 3
Respuesta: separar las palabras por el numero de letras con php

Hola Amigos, usando el filtro anterior intente hacer algo nuevo que es ingresar informacion a una base de datos directamente desde la URL, pero no se que pasa, no se porque no ingresan, mi codigo es el siguiente, si alguien me puede dar una mano:
Código PHP:
<?php 
include "coneccion.php";
$query "INSERT INTO direc_www SET (direccion, fecha, pag) VALUES ('".$x."', NOW(), '".$mwdl."')";
$mwdl "MWDL";
$str file_get_contents('http://www....');
$str trim($str);
$str preg_replace("/\s\s+/"' '$str);
$a explode(' '$str);
$count count($a);
for (
$row 0$row $count $row++) {
        
$x $a["$row"];
        
mysql_query($query) or die ("no se ejecuto el Query");
}  
echo 
"Se encontraron "."$count"." URLs";
mysql_close($con);
?>
de antemano gracias
  #5 (permalink)  
Antiguo 14/03/2009, 13:51
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: separar las palabras por el numero de letras con php

De donde salen $x y $mwdl? Si vienen por URL lo correcto es:

Código php:
Ver original
  1. $x = $_GET['x'];
  2. $mwdl = $_GET['mwdl'];

Todavia faltaria hacer la validacion de los campos, que esten especificados (no vacios) y que sean realmente en el formato/longitud en que los esperas.
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 14/03/2009, 14:42
 
Fecha de Ingreso: enero-2009
Ubicación: en la casa
Mensajes: 223
Antigüedad: 15 años, 9 meses
Puntos: 3
Respuesta: separar las palabras por el numero de letras con php

Hola, $mwdl = "MWDL", sale de la 4 fila y $x = $a["$row"] sale de la fila 11, ninguno de los 2 valores son ingresados, el primero es estatico y el segundo )el de $x es obtenido de la pagina web, y si son en el formato adecuado, pero de antemano te digo que la pagina de donde saco la informacion $str = file_get_contents('http://www....'); presentan de la siguiente forma el html
Cita:
<br>180solutions.com
<br>181.365soft.info
<br>18dd.net/new/system22.exe
<br>1941revenge.org/download.php?browser=msie6
<br>1941revenge.org/go.php?s=zerling
y la base de datos que yo tengo es asi
Cita:
CREATE TABLE `direc_www` (
`direccion` varchar(1000) NOT NULL,
`fecha` datetime NOT NULL,
`pag` varchar(100) NOT NULL,
PRIMARY KEY (`direccion`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
  #7 (permalink)  
Antiguo 14/03/2009, 14:55
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: separar las palabras por el numero de letras con php

Entonces es logico que falle, porque la asignacion a la cadena de consulta debiera estar dentro del for y no antes de definir ambas variables, porque siempre tendran el mismo contenido (NULL o cadena vacia).

Código php:
Ver original
  1. include "coneccion.php";
  2. $mwdl = "MWDL";
  3. $str = file_get_contents('http://www....');
  4. $str = trim($str);
  5. $str = preg_replace("/\s\s+/", ' ', $str);
  6. $a = explode(' ', $str);
  7. $count = count($a);
  8. for ($row = 0; $row < $count ; $row++) {
  9.         $x = $a["$row"];
  10.         $query = "INSERT INTO direc_www SET (direccion, fecha, pag) VALUES ('".$x."', NOW(), '".$mwdl."')";
  11.         mysql_query($query) or die ("no se ejecuto el Query");
  12. }  
  13. echo "Se encontraron "."$count"." URLs";

Por cierto, asegurate de quitar los <br> para evitarte mas problemas.
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 14/03/2009, 15:10
 
Fecha de Ingreso: enero-2009
Ubicación: en la casa
Mensajes: 223
Antigüedad: 15 años, 9 meses
Puntos: 3
Respuesta: separar las palabras por el numero de letras con php

Sigue sin trabajar, ya trate de sacar los <br>, pèro igual sigue dando error, te dejo el codigo.
Código PHP:
include "coneccion.php";
$mwdl "MWDL";
$str1 file_get_contents('');
$str ereg_replace("<br>"" "$str1);
$str trim($str);
$str preg_replace("/\s\s+/"' '$str);
$a explode(' '$str);
$count count($a);
for (
$row 0$row $count $row++) {
        
$x $a["$row"];
        echo 
$x;
        
$query "INSERT INTO direc_www SET (direccion, fecha, pag) VALUES ('".$x."', NOW(), '".$mwdl."')";
        
mysql_query($query) or die ("no se ejecuto el Query");
}  
echo 
"Se encontraron "."$count"." URLs";
mysql_close($con); 

Última edición por diego007007; 15/03/2009 a las 15:03
  #9 (permalink)  
Antiguo 14/03/2009, 20:23
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: separar las palabras por el numero de letras con php

La lista es muy larga.

1. Ya revisaste que obtienes correctamente las direcciones?
2. Reemplaza los <br> por cadena vacia en vez de un espacio y con str_replace, ya que es reemplazo de caracteres y no de patrones.
3. En $a["$row"] sobran las comillas, puesto que es un indice numerico.
4. Podrias armar bloques de 100 direcciones para insertar, esto solo ayudaria a optimizar un poco la carga de MySQL, aunque no es tan necesario si el proceso no se va a realizar frecuentemente.

El mayor problema seria el # 1, donde ciertamente debes modificar el maximo tiempo de ejecucion y puede ser "al vuelo" sin tener que cambiar php.ini, solo usa ini_set('campo_de_configuracion', valor);

Hay otras opciones para tratar de leer, como cURL o fsockopen en caso de que file_get_contents falle.
__________________
- León, Guanajuato
- GV-Foto
  #10 (permalink)  
Antiguo 26/03/2009, 09:20
 
Fecha de Ingreso: enero-2009
Ubicación: en la casa
Mensajes: 223
Antigüedad: 15 años, 9 meses
Puntos: 3
Respuesta: separar las palabras por el numero de letras con php

Hola Triby, no se que paso pero reistale Mysql en la computadora y ya me funciono bien el codigo que use, pero tome en cuenta las recomendaciones que me diste y todo trabaja bie, muchas gracias
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 21:45.