Foros del Web » Programando para Internet » PHP »

Obtener un array de un documento de texto

Estas en el tema de Obtener un array de un documento de texto en el foro de PHP en Foros del Web. hola aigos, soy nuevo en esto de programacion en PHP y necesito que me ayuden con este proyecto; lo que estoy haciendo es un filtro ...
  #1 (permalink)  
Antiguo 29/01/2009, 08:00
 
Fecha de Ingreso: enero-2009
Ubicación: en la casa
Mensajes: 223
Antigüedad: 15 años, 3 meses
Puntos: 3
hola aigos, soy nuevo en esto de programacion en PHP y necesito que me ayuden con este proyecto; lo que estoy haciendo es un filtro de links para paginas, lo que hace mi programa al momento es seleccionar una direccion de internet y retirar todos los links que esta posee,eso si lo consegui, todo eso se guarda en un documento de texto, lo que despues trate de hacer es un filtro de todas las direcciones que ya saque, para que no aparescan mas, y trate de mandarlas a un Array (asi como es el filtro de palabras para los foros) y cuando las escribia en el documento php si funciona, pero cuando conecto el Array al documento de texto, este no me funcuina, porfa si pueden ayudarme.

este es mi documento index.php

Código PHP:
<html>
<body>
<form id="form1" method="post" action="direcciones.php">
<input name="direc" type="text" id="direc" size="35" />
<input type="submit" value="buscar" />
</form>
</body>
</html>

<?php
$direc 
$_POST['direc'];
function 
epm($cadena){ 
$lineas file("direcciones.txt");
$palabra =$lineas;
//$palabras = 'javascript://, http://www.net.ru, http://www.net.ru/service/price, http://www.picred.com, http://cardmoney.ru, http://smscoin.com, http://www.e-generator.ru';
$palabra explode(', ',$palabras);
$palabras count($palabra);
$base 0;
while(
$base<$palabras){
$cadena str_ireplace($palabra[$base],'***',$cadena);
$base++;
}
return 
$cadena;
}
$cadena file_get_contents($direc);
$cadena epm($cadena);
//echo $cadena;
?>
<?php
$regExp1
="/href=\"(.*?)\"/is" ;
$file = ('$cadena');
preg_match_all($regExp1,$cadena,$a);
$count count($a[1]);
echo 
"<b>Number of Urls</b> = " .$count."<p>";
for (
$row 0$row $count $row++) {
echo 
$a[1]["$row"]."<br>";
}
?>
y el documento de texto "documentos.txt"

Código PHP:
http://www.denwer.ru<br>
http://www.net.ru<br>
http://www.net.ru/service/price<br>
http://www.picred.com<br>
http://cardmoney.ru<br>
http://smscoin.com<br>
http://www.e-generator.ru<br>
http://torrents.ru<br>
https://subdomain.localhost/ssl.php<br>
http://subdomain.localhost/<br>
http://test1.ru/<br>
http://subdomain.test1.ru/<br>
http://localhost/Tests/phpnotice/index.php<br>
http://localhost/Tests/PHP5/index.php5<br>
http://localhost/Tools/phpMyAdmin<br>
http://custom-host:8648<br>
http://www.microsoft.com/downloads/details.aspx?FamilyID=17d997d2-5034-4bbb-b74d-ad8430a1f7c8&amp;displaylang=en<br>
http://localhost/Tests/sendmail/index.php<br>
/denwer/Tools/dnsearch/search.pl?action=help<br>javascript://<br>
javascript://<br>
javascript://<br>
javascript://<br>
javascript://<br> 
estos datos se generaron con una direccion cualquiera, muy agradecido al que me pueda ayudar con este problema.

o si es problema del archivo de texto, puedo hacer que las direcciones se muestren asi:

pero necesito la forma de que array pueda reconocer los caracteres como en esta linea

please help, today for my, tomorrow for you

Última edición por GatorV; 30/01/2009 a las 10:29
  #2 (permalink)  
Antiguo 29/01/2009, 10:13
 
Fecha de Ingreso: mayo-2006
Mensajes: 288
Antigüedad: 17 años, 11 meses
Puntos: 4
Respuesta: Obtener un array de un documento de texto

umm la idea es buena solo que no estas aplicando la funcion file como deberia ser:

<?php
$direc = $_POST['direc'];
function epm($cadena){
$lineas = file("direcciones.txt");
$palabra =$lineas;
$palabras = count($palabra);
$base = 0;
while($base<$palabras){
$cadena = str_ireplace($palabra[$base],'***',$cadena);
$base++;
}
return $cadena;
}
$cadena = file_get_contents($direc);
$cadena = epm($cadena);
//echo $cadena;
?>

Ha por cierto tu documento de texto "documentos.txt" debe estar asi:

http://google.com
http://yahoo.es
http://realnet.com
.
.
.
etc.


Trata esto espero te funcione ;).

Por cierto pero si no quieres hacerle mucha bola y quieres sacar cualquier url sin importar cual es con la condicion que esta tengue http:// al inicio busca en el foro EXPRESIONES REGULARES y en una sin mucho esfuerzo desapareces toda url que se te este filtrando.
  #3 (permalink)  
Antiguo 29/01/2009, 10:33
 
Fecha de Ingreso: enero-2009
Ubicación: en la casa
Mensajes: 223
Antigüedad: 15 años, 3 meses
Puntos: 3
Hola netserver, ya puse el texto como tu me dices, pero sigo con el problema de file, e leido sobre file_get_ post pero tampoco funciona, alguien puede ayudarme; lo que estoy tratando es de filtrar las direcciones que ya vi para que no salgan mas, pero tienen que asomar las nuevas, a esas nuevas las voy agregando en el archivo txt, asi para el siguiente busqueda esas direcciones ya no apareceran, sino seran otras

Hola netserve, con el codijgo que tu me diste solo hace el filtrado de la ultima direccion en el texto, y si pongo otra direccion o retiro una direccion, ya no trabaja el filtro; hay forma de que todas las palabras del documento txt sean filtradas y no se muestren

alguien porfa, alguno que tenga una idea

Última edición por GatorV; 30/01/2009 a las 10:28
  #4 (permalink)  
Antiguo 29/01/2009, 13:47
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Obtener un array de un documento de texto

No entiendo si lo que quieres es obtener las URL de una pagina, o hacer que cuando recoja las URL no las DUPLIQUE en el documento de texto, o ambas.

Para recoger las URL de un sitio web, file_get_contents() + Expresiones regulares (Hay bastantes expresiones regulares para tomar URLs).
Si quieres revisar que una direccion ya exista, carga el archivo con file() y luego cada vez que vallas a insertar, asegurate de que la direccion no existe en el arreglo con in_array().
  #5 (permalink)  
Antiguo 29/01/2009, 13:59
 
Fecha de Ingreso: enero-2009
Ubicación: en la casa
Mensajes: 223
Antigüedad: 15 años, 3 meses
Puntos: 3
Respuesta: Obtener un array de un documento de texto

Hola Ronruby, lo que necesito es que todas las direcciones que saco de una pagina de internet no se repitan con las que tengo guardadas en el archivo txt, para eso esta el filtro que netserver me ayudo a arreglar, pero el filtro que me dio solo oculta la ultima direccion que se encuentra en el archivo de texto, y yo necesito que filtre todoas las direcciones del archivo de texto para que no se muestren en la pagina.
  #6 (permalink)  
Antiguo 29/01/2009, 14:03
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Obtener un array de un documento de texto

Cita:
Iniciado por diego007007 Ver Mensaje
Hola Ronruby, lo que necesito es que todas las direcciones que saco de una pagina de internet no se repitan con las que tengo guardadas en el archivo txt, para eso esta el filtro que netserver me ayudo a arreglar, pero el filtro que me dio solo oculta la ultima direccion que se encuentra en el archivo de texto, y yo necesito que filtre todoas las direcciones del archivo de texto para que no se muestren en la pagina.


Cita:
Si quieres revisar que una direccion ya exista, carga el archivo con file() y luego cada vez que vallas a insertar, asegurate de que la direccion no existe en el arreglo con in_array().
Como te dije, carga el archivo con file(), y luego antes de escribir la direccion en el archivo de texto revisa que este en el array que te devuelve file() usando la funcion in_array().
  #7 (permalink)  
Antiguo 29/01/2009, 14:06
 
Fecha de Ingreso: enero-2009
Ubicación: en la casa
Mensajes: 223
Antigüedad: 15 años, 3 meses
Puntos: 3
no entiendo, como hacer eso, puedes mostrarme

Hola Ronruby, lo que el programa tiene que hacer es lo sigueinte:
1) ponemos una direccion de internet (ejm. http://www.noticias.com) y lo que hace el programa es sacar todos los links que tiene esta direccion
2) esos links los copio y guardo en el archivo "direcciones.txt"
3)aguardo 1 hora y mando abuscar al programa a la misma direccion que coloque ( http://www.noticias.com) y en esta ocacion con ayuda del filtro tiene que mostarme solo las direcciones nuevas que durante esa hora coloco el administrador del sait; despues de eso copiare y pegare esas nuevas direcciones en el archivo "direcciones.txt" y esperare otra hora para ssegir haciendo lo mismo.

el codigo que me brindo netserver reconoce el archivo "direcciones.txt" pero solo hace el filtrado con la ultima direccion que se encuentra en ese archivo, y lo que necesito es que haga el filtrado con todas las direcciones que se encuentran en el archivo asi como lo hace cuando coloco manualmente todas las direcciones en el codigo como en este ejemplo:
alguien puede ayudarme

Última edición por GatorV; 30/01/2009 a las 10:28
  #8 (permalink)  
Antiguo 29/01/2009, 21:11
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Obtener un array de un documento de texto

Cita:
Como te dije, carga el archivo con file(), y luego antes de escribir la direccion en el archivo de texto revisa que este en el array que te devuelve file() usando la funcion in_array().
Código PHP:
<?php

//carga el archivo con file()
$file file('archivo.txt');

//suponemos que asi insertas las direcciones en el archivo de texto:
foreach($direcciones as $direccion) {
    
//revisa que este en el array que te devuelve file() usando la funcion in_array()
    
if(!in_array($direccion$file)) {
        
//sino esta en el array la escribo:
        
fwrite($fopen$direccion."\n");
    }
}

?>
  #9 (permalink)  
Antiguo 30/01/2009, 06:39
 
Fecha de Ingreso: enero-2009
Ubicación: en la casa
Mensajes: 223
Antigüedad: 15 años, 3 meses
Puntos: 3
Hola Ronruby, puse el codigo que me dejaste, pero no funciona, puede ser que yo lo este usando mal, asi que aqui te dejo lo que tengo del codigo para que me des una mano

Código PHP:
<html>
<body>
<form id="form1" method="post" action="dir.php">
<input name="direc" type="text" id="direc" size="35" />
<input type="submit" value="buscar" />
</form>
</body>
</html>
<?php
$direc 
$_POST['direc'];
//carga el archivo con file()
$file file('direcciones.txt');
$direcciones $file;
$fopen fopen"direcciones.txt""a+" );
//suponemos que asi insertas las direcciones en el archivo de texto:
foreach($direcciones as $direccion) {
    
//revisa que este en el array que te devuelve file() usando la funcion in_array()
    
if(!in_array($direccion$file)) {
        
//sino esta en el array la escribo:
        
fwrite($fopen$direccion."\n");
    }
    
//echo "$direccion";
}
/////////////////////////////////////////////////////////////////////////////
// cambia las direcciones del html, que se guardan en el archivo txt, a ***** 
/////////////////////////////////////////////////////////////////////////////
function epm($cadena){
$palabra =$direccion;
$palabras count($palabra);
$base 0;
while(
$base<$palabras){
$cadena str_ireplace($palabra[$base],'***',$cadena);
$base++;
}
return 
$cadena;
}
$cadena file_get_contents($direc);
$cadena epm($cadena);
////////////////////////////////////////////////////////////////////////////
/////////////// Busca las direciones http de la pagina////////////////////////
////////////////////////////////////////////////////////////////////////////
$regExp1="/href=\"(.*?)\"/is" ;
$regExp2="/<a.*?>(.*?)<\/a>/is";
$file = ('$cadena');
preg_match_all($regExp1,$cadena,$a);
$count count($a[1]);
echo 
"<b>Numero de links</b> = " .$count."<p>";
for (
$row 0$row $count $row++) {
echo 
$a[1]["$row"]."<br>";
}
?>
.
y el archivo txt lo tengo asi:

lo que si yo hago manualmente la copia de los archivos desde la pagina de internet al archivo txt, no uso por el momento ninguna funcion.

O aqui les mando mi programa original con el que hacgo filtrador, pero solo reconoce las ultima direccion de la lista de archivos de text para que lo modifiquen y hacerlo trabajar con todas las direcciones de la lista de text

Cita:
<html>
<body>
<form id="form1" method="post" action="dir.php">
<input name="direc" type="text" id="direc" size="35" />
<input type="submit" value="buscar" />
</form>
</body>
</html>
<?php
$direc = $_POST['direc'];
function epm($cadena){
$lineas = file("direcciones.txt");
$palabra =$lineas;
$palabras = count($palabra);
$base = 0;
while($base<$palabras){
$cadena = str_ireplace($palabra[$base],'***',$cadena);
$base++;
}
return $cadena;
}
$cadena = file_get_contents($direc);
$cadena = epm($cadena);
//echo $cadena;

$regExp1="/href=\"(.*?)\"/is" ;
$regExp2="/<a.*?>(.*?)<\/a>/is";
$file = ('$cadena');
preg_match_all($regExp1,$cadena,$a);
$count = count($a[1]);
echo "<b>Numero de links</b> = " .$count."<p>";
for ($row = 0; $row < $count ; $row++) {
echo $a[1]["$row"]."<br>";
}
?>

Última edición por GatorV; 30/01/2009 a las 10:28
  #10 (permalink)  
Antiguo 30/01/2009, 10:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Filtrado de links de una pagina cualquiera

Temas unidos porfavor NO dupliques temas.
  #11 (permalink)  
Antiguo 30/01/2009, 13:03
 
Fecha de Ingreso: enero-2009
Ubicación: en la casa
Mensajes: 223
Antigüedad: 15 años, 3 meses
Puntos: 3
Respuesta: Obtener un array de un documento de texto

alguien puede ayudarme
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 00:27.