Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]php, count
Forum PHP.pl > Forum > Przedszkole
canismajoris
Witam

Jak zliczyć linie w pliku txt z pasującym stingiem.

dzieki
Barcelona
Najpierw musisz wczytać plik do tablicy
  1. $plik = file('dane.txt');


Następnie musisz rozwalić dane na linie

  1. foreach($plik as $linia) {
  2. $i++;
  3. list($id, $dane, $dane2, $dane3) = explode(',', trim($linia));
  4. }


Teraz musisz sprawdzić ile razy string wystąpił w danej linii, jednak moje umiejętności na tym się kończą.

Tutaj masz przykład w jaki sposób wyliczyć ile raz w tekscie występuje dana liczba bądź litera.

  1. $txt = "Jakiś tekst";
  2. preg_match_all("/a/", $txt, $sa);
  3. echo count($sa[0]);

canismajoris
Dzięki za pomoc, ale to nie to...

Mega ten php zakręcony w bashu robi się to jedną komendą grep a tu cyrk.
Zrobiłem tak:

$plik=file("plik.txt");
foreach ($plik as $linia => $var ) {
if (preg_match('/string/',$var)) {
}}
$wynik=count($var);

wiem że to źle , ale nic innego nie przychodzi mi go głowy.

mogę poprzez exec odpalić skrypt w bashu i odczytać wynik,ale nie o to chodzi.

może jeszcze ktoś ma jakiś pomysł?

canismajoris
to pokażę liczbę linii w pliku.
ale potrzebuję liczbę lini w pliku z pasującym stringiem.


plik tekstowy:

ala ma kota
ania ma psa
tomek ma kota
juzek ma chomika
marcin ma kota

chcę wypisać liczbę linii w pliku z wyrazem "kota"

Barcelona
  1. $plik = file("plik.txt");
  2. for($i=1;$i<=count($plik);$i++) {
  3. echo "$i $plik[$i]<br />";
  4. }


Albo
  1. $dane = file("plik.txt");
  2. foreach($dane as $linia) {
  3. if (eregi("ie", $linia)) echo "$linia <br />";
  4. }
canismajoris
ok mam wypisane linie pasujące do stringa, a teraz liczba tych linii?

ps; i dzięki za zaangażowanie wink.gif
Barcelona
To tym pierwszym kodem:

  1. $plik = file("plik.txt");
  2. for($i=1;$i<=count($plik);$i++) {
  3. echo "$i $plik[$i]<br />";
  4. }
canismajoris
ten kod wypisze mi numer lini i całą linię...

ja potrzebuję sam wynik.

echo " <td>liczba kotów to</td><td>$wynik</td>";

smile.gif

albo tak będzie lepiej zrozumieć
w bashu to ma tak wyglądać:

cat plik.txt |grep sting -c

i to samo w php...
Barcelona
Nie wiem kolego, na bashu nie znam się w ogóle, a tutaj już nie jestem w stanie pomóc.

A próbowałeś tytułowego count?
crocodillo
  1. $txt='ala ma kota
  2. ania ma psa
  3. tomek ma kota
  4. juzek ma chomika
  5. marcin ma kota kota kota kota kota i kota';
  6.  
  7. $count = preg_match_all('/^.*kota.*$/m',$txt,$result);
  8.  
  9. echo $count;
  10. var_dump($result);
canismajoris
tylko tablica musi być z pliku tekstowego.

to co podałeś nie działą...
crocodillo
to pobierz ten plik do zmiennej

file_get_contents()
canismajoris
$ddd=file_get_contents("plik.txt");
$liczba=substr_count($ddd,"string");
echo $liczba;

crocodillo dzięki, masz plusa .

jakie to było proste.
crocodillo
Cytat(canismajoris @ 26.02.2012, 15:27:13 ) *
$liczba=substr_count($ddd,"string");


tylko pamiętaj, że substr_count() policzy podwójnie jeśli dany ciąg występuje 2 razy w jednej linii.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.