 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| 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 |
|
| |
|