Autor Zpráva
juraj
Profil
Ako v textovovom súbore najdem ľubovolne slovo bez podmienky a mi spočíta koľkokrát sa opakuje v texte?
dakujem za rady

<?php
$file = 'soubor.txt';
$searchfor = 'page';

// the following line prevents the browser from parsing this as HTML.
header('Content-Type: text/plain');

// get the file contents, assuming the file to be readable (and exist)
$contents = file_get_contents($file);
// escape special characters in the query
$pattern = preg_quote($searchfor, '/');
// finalise the regular expression, matching the whole line
$pattern = "/^.*$pattern.*\$/m";
// search, and store all matching occurences in $matches
if(preg_match_all($pattern, $contents, $matches)){
   echo "Found matches:\n";
   echo implode("\n", $matches[0]);
}
else{
   echo "No matches found";
}

    ?>
pcmanik
Profil
juraj:
Sluzi na to strpos
juraj
Profil
pcmanik:
ja chcem,aby slovo,ktoré sa v exte vyskytuje viac krát našlo bez podmienky
napr v subore je uložená veta Na stránke,stránke stránke je veta
a slovo stránke sa vyskytuje 3krát
mimochodec_
Profil *
Co znamená "bez podmienky"? A rozumíš správně slovu "našlo"? Jestli chceš spočítat všechny výskyty řetězce uvnitř jiného, použij výše uvedený strpos ve smyčce http://cz2.php.net/manual/en/control-structures.while.php

Smyčku procházej tak dlouho, dokud budeš od minulé pozice nacházet další výskyty. A každý průchod započítej v nějaké pomocné proměnné.
Keeehi
Profil
Mám takový pocit, že juraj chce najít v textu opakující-se slova a nezáleží na tom, jaké to slovo je.
$file = 'soubor.txt';

$contents = file_get_contents($file);
$arrayOfWords = preg_split('~\W~', $contents);
$countedWords = array_count_values($arrayOfWords);
//arsort($countedWords);  // Seřazení od nejpočetnějších, pro opačné řazení se použije asort
foreach($countedWords as $word => $count) {
    if ( $count > 1 && !empty($word)) {
        echo "Slovo $word se v textu vyskytlo $count"."x.<br>\n";
    }
}
juraj
Profil
Keeehi:
Áno, máš dobrý pocit ďakujem

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: