O functie PHP ce poate fi utilizata pentru a
uni liniile din mai multe fisiere, in ordine una dupa alta. Functia (denumita mergeLineFiles() ) returneaza un array cu liniile fisierelor unite; de exemplu, un array ca acesta:
array (
0 => 'linia_1 din fisier1',
1 => 'linia_1 din fisier2',
2 => 'linia_1 din fisier3',
3 => 'linia_2 din fisier1',
4 => 'linia_2 din fisier2',
5 => 'linia_2 din fisier3',
6 => 'linia_3 din fisier1',
7 => 'linia_3 din fisier2',
8 => 'linia_3 din fisier3',
// si tot asa ...
);
- Cu implode(), si file_put_contents(), liniile pot fi salvate in alt fisier.
Functia mergeLineFiles() primeste 2 argumente: un array cu numele /adresa fisierelor, si numarul de linii care sa fie unite din fiecare fisier. Al doilea argument e optional, daca nu e adaugat (sau e cu valoare 0), functia va uni toate liniile.
Codul functiei mergeLineFiles()
/*
Unire Linii din mai multe Fisiere, una dupa alta
De la: https://marplo.net/php-mysql/
- $files = array cu numele /adresa fisierelor
- $maxlines = numarul maxim de linii care sa fie unite din fiecare fisier (0 adauga toate liniile)
Returneaza un array cu liniile unite
*/
function mergeLineFiles($files, $maxlines = 0) {
$final_lines = array(); // retine liniile unite
// preia in array-uri liniile fiecarui fisier
$filesdata = array();
$nrfiles = count($files);
$arr_nr_lines = array(); // pt numarul de linii din fiecare fisier
for($i=0; $i<$nrfiles; $i++) {
if(file_exists($files[$i])) {
$filesdata[] = file($files[$i], FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$arr_nr_lines[] = count(end($filesdata));
}
}
$nrfiles = count($filesdata); // numarul de array-uri cu linii
if($nrfiles > 0) {
$lines = ($maxlines == 0) ? max($arr_nr_lines) : $maxlines;
for($i=0; $i<$lines; $i++) {
// parcurge array-urile cu liniile fisierelor
// adauga in $final_lines prima linie si o sterge
for($i2=0; $i2<$nrfiles; $i2++) {
if(isset($filesdata[$i2][0])) $final_lines[] = array_shift($filesdata[$i2]);
}
}
}
return $final_lines;
}
-
Exemplu utilizare, uneste liniile din 3 fisiere si le adauga in alt fisier. Cu functia mergeLineFiles() obtine array-ul cu liniile unite, apoi le salveaza pe server cu file_put_contents():
<?php
/*
Unire Linii din mai multe Fisiere, una dupa alta
De la: https://marplo.net/php-mysql/
- $files = array cu numele /adresa fisierelor
- $maxlines = numarul maxim de linii care sa fie unite din fiecare fisier (0 adauga toate liniile)
Returneaza un array cu liniile unite
*/
function mergeLineFiles($files, $maxlines = 0) {
$final_lines = array(); // retine liniile unite
// preia in array-uri liniile fiecarui fisier
$filesdata = array();
$nrfiles = count($files);
$arr_nr_lines = array(); // pt numarul de linii din fiecare fisier
for($i=0; $i<$nrfiles; $i++) {
if(file_exists($files[$i])) {
$filesdata[] = file($files[$i], FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$arr_nr_lines[] = count(end($filesdata));
}
}
$nrfiles = count($filesdata); // numarul de array-uri cu linii
if($nrfiles > 0) {
$lines = ($maxlines == 0) ? max($arr_nr_lines) : $maxlines;
for($i=0; $i<$lines; $i++) {
// parcurge array-urile cu liniile fisierelor
// adauga in $final_lines prima linie si o sterge
for($i2=0; $i2<$nrfiles; $i2++) {
if(isset($filesdata[$i2][0])) $final_lines[] = array_shift($filesdata[$i2]);
}
}
}
return $final_lines;
}
/* Utilizare mergeLineFiles() */
$files = array('file1.txt', 'file2.txt', 'file3.txt'); // array cu fisiere
$final_file = 'somefile.txt'; // fisierul in care vor fi salvate liniile unite
// apeleaza mergeLineFiles() si retine array-ul cu toate liniile
$final_lines = mergeLineFiles($files);
// Sau, uneste doar primele 4 linii din fiecare fisier
// $final_lines = mergeLineFiles($files, 4);
// salveaza liniile unite in $final_file
if(file_put_contents($final_file, implode(PHP_EOL, $final_lines))) echo 'Date salvate';
else echo 'Nu poate salva datele';
?>
Un Test simplu in fiecare zi
HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag HTML5 defineste un text marcat, evidentiat?
<mark> <embed> <span><p>Cursuri graruite: <mark>MarPlo.net</mark> , jocuri, anime.</p>
Ce pseudo-clasa CSS defineste un stil la element cand mouse-ul e deasupra lui?
:focus :hover :activea:hover {
font-weight: bold;
color: #00da01;
}
Clic pe functia ce returneaza un sir cu un numar rotunjit la x decimale.
toPrecision(x) toFixed(x) floor(x)var num = 12.34567;
num = num.toFixed(2);
alert(num); // 12.35
Indicati functia PHP care adauga continutul unui fisier intr-un array.
[) file() readfile()$arr = file("a_file.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
var_export($arr);
Clic pe raspunsul potrivit la intrebarea: "What time is it?"
On the 7th of July 1996 It is a quarter to 5. Nice weather.What time is it? It is a quarter to 5.
- Cat este ora? E 5 fara un sfert.
Indicati raspunsul potrivit la intrebarea: "¿Qué hora es?"
Hace buen tiempo. En el 7 de julio de 1996 Son las tres menos cuarto.¿Qué hora es? Son las tres menos cuarto.
- Cat este ora? E 3 fara un sfert.