Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]php, count
canismajoris
post 25.02.2012, 14:15:56
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 11.01.2012

Ostrzeżenie: (0%)
-----


Witam

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

dzieki
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
Barcelona
post 25.02.2012, 15:26:04
Post #2





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


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]);

Go to the top of the page
+Quote Post
canismajoris
post 25.02.2012, 15:41:14
Post #3





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 11.01.2012

Ostrzeżenie: (0%)
-----


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ł?

Go to the top of the page
+Quote Post
Majkelo23
post 25.02.2012, 15:45:03
Post #4





Grupa: Zarejestrowani
Postów: 226
Pomógł: 17
Dołączył: 13.02.2012

Ostrzeżenie: (0%)
-----


http://www.egrafik.pl/porady/php-jak-polic...-linii-w-pliku/
Go to the top of the page
+Quote Post
canismajoris
post 25.02.2012, 15:49:14
Post #5





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 11.01.2012

Ostrzeżenie: (0%)
-----


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"

Go to the top of the page
+Quote Post
Barcelona
post 25.02.2012, 15:55:05
Post #6





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


  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. }


Ten post edytował Barcelona 25.02.2012, 15:53:03
Go to the top of the page
+Quote Post
canismajoris
post 25.02.2012, 15:59:45
Post #7





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 11.01.2012

Ostrzeżenie: (0%)
-----


ok mam wypisane linie pasujące do stringa, a teraz liczba tych linii?

ps; i dzięki za zaangażowanie wink.gif

Ten post edytował canismajoris 25.02.2012, 16:00:09
Go to the top of the page
+Quote Post
Barcelona
post 25.02.2012, 16:05:23
Post #8





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


To tym pierwszym kodem:

  1. $plik = file("plik.txt");
  2. for($i=1;$i<=count($plik);$i++) {
  3. echo "$i $plik[$i]<br />";
  4. }
Go to the top of the page
+Quote Post
canismajoris
post 25.02.2012, 16:07:54
Post #9





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 11.01.2012

Ostrzeżenie: (0%)
-----


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...


Ten post edytował canismajoris 25.02.2012, 16:13:05
Go to the top of the page
+Quote Post
Barcelona
post 25.02.2012, 18:48:13
Post #10





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
crocodillo
post 25.02.2012, 20:31:08
Post #11





Grupa: Zarejestrowani
Postów: 215
Pomógł: 44
Dołączył: 31.07.2011
Skąd: wrocław

Ostrzeżenie: (0%)
-----


  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);


Ten post edytował crocodillo 25.02.2012, 20:32:24
Go to the top of the page
+Quote Post
canismajoris
post 26.02.2012, 10:38:05
Post #12





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 11.01.2012

Ostrzeżenie: (0%)
-----


tylko tablica musi być z pliku tekstowego.

to co podałeś nie działą...
Go to the top of the page
+Quote Post
crocodillo
post 26.02.2012, 10:47:54
Post #13





Grupa: Zarejestrowani
Postów: 215
Pomógł: 44
Dołączył: 31.07.2011
Skąd: wrocław

Ostrzeżenie: (0%)
-----


to pobierz ten plik do zmiennej

file_get_contents()

Ten post edytował crocodillo 26.02.2012, 10:48:43
Go to the top of the page
+Quote Post
canismajoris
post 26.02.2012, 14:27:13
Post #14





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 11.01.2012

Ostrzeżenie: (0%)
-----


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

crocodillo dzięki, masz plusa .

jakie to było proste.
Go to the top of the page
+Quote Post
crocodillo
post 26.02.2012, 15:34:12
Post #15





Grupa: Zarejestrowani
Postów: 215
Pomógł: 44
Dołączył: 31.07.2011
Skąd: wrocław

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:23