Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Problema cu functia fopen. Concatenare (Rezolvat)
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Incepători
Subiectul anterior :: Subiectul următor  
Autor Mesaj
dangerboa



Data înscrierii: 05/Mai/2008
Mesaje: 4

Trimis: Dum Mai 11, 2008 2:55 pm    Titlul subiectului: Problema cu functia fopen. Concatenare (Rezolvat)  

Am un fisier text "database.txt" in care e scris pe fiecare linie un nume:
a1
a2
a3
...
In folder-ul "names" am cate un fisier text (fara extensia ".txt") pentru fiecare linie din "database.txt":
a1
a2
a3
...

Imi trebuie o functie care sa-mi returneze o anumita linie din fiecare fisier din folderul "names". Eu am scris asa:

1 <?php
2 function get_line($x)
3 {
4 $line_no=0;
5 $name_info=fopen("names/".$x, "r");
6 while (!feof($name_info))
7 {
8 $line=fgets($name_info);
9 $line_no++;
10 if ($line_no==7) return $line;
11 }
12 fclose($name_info);
13 }
14
15 $database=fopen("database.txt", "r");
16 while (!feof($database))
17 {
18 $row=fgets($database);
19 get_line($row);
20 }
21 fclose($database);
22 ?>

Eroarea care mi-o da este: Warning: fopen(names/a1 ) [function.fopen]: failed to open stream: Invalid argument in my_file.php on line 5
Bine inteles imi da aceiasi eroare pentru fiecare linie din "database.txt"
Am observat ca in eroare apare un spatiu dupa a1,a2,a3,... insa acest spatiu nu exista in fisierul meu txt. Din cauza asta nu-mi gaseste fisierele.
Puteti sa-mi spuneti unde am gresit?? Sau sa-mi dati o alternativa? (dar tot cu fopen, nu cu MySQL db). Si deasemenea, cum as putea citi linia x fara sa mai parcurg tot fisierul pana la ea??
Sus  
whooper



Data înscrierii: 05/Apr/2005
Mesaje: 713
Locație: Toronto ON

Trimis: Dum Mai 11, 2008 6:25 pm    Titlul subiectului: Re: Problema cu functia fopen.Aparitia unui spatiu la concat  

dangerboa a scris:
5 $name_info=fopen("names/".$x, "r");

Cod:
5    $name_info=fopen("names/".trim($x, " \t\n\r"), "r");

adica barbieresti de spatii, tabs, line feeds si carriage returns ce citesti din fisierul ala. Abia dupa aia concatenezi.


Cand ai valoarea concatenata, testeaza intai daca fisierul exista, folosind functia file_exists()

E mai simplu sa citesti tot fisierul tau intr-un array, o singura data la inceputul scriptului, folosind functia file(). Dupa aia citesti valorile folosind direct numarul liniei (pentru linia 7 index-ul in array e 6, numaratoarea porneste de la 0).
Sus  
dangerboa



Data înscrierii: 05/Mai/2008
Mesaje: 4

Trimis: Dum Mai 11, 2008 7:17 pm    Titlul subiectului: Re: Problema cu functia fopen.Aparitia unui spatiu la concat  

Ce pot sa mai zic?? Multumesc mult!! Se pare ca merge. Mi-era teama ca functia aceea imi ia si spatiile dintre nume. De exemplu daca aveam:
Andrei
Ana Maria
Geroge

Ma gandeam ca transforma "Ana Maria" in "AnaMaria". Insa asta nu se intampla. Thanks whooper!!
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Incepători
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community