2017-03-15 6 views
2

残念ですが、これはStackoverflowに関する最初の質問です。file_get_contentsの後に、ファイル内の<span>のインスタンス数と同じテキストの出現回数をカウントします。

複数の.txtファイルからテキストを取得し、その内容をPHPファイルで取得しようとしています。 次のコードは正常に動作します。

<html> 

<head> 
    <title> 
    </title> 
</head> 

<body> 
    <?php 

foreach (glob("*.txt") as $filename) { 
    echo "<br> $filename size " . filesize($filename) . "\n"; 
    $contents = htmlentities(file_get_contents($filename)); 


    echo $contents; 

    } 

?> 
</body> 

</html> 

私は私のテキストファイル(のは、そのステップAと呼びましょう)にタグの間のすべてを取得し、スパンファイル間のすべての類似したアイテムの発生をカウントしたい

Link here

preg_match_all("/<span>(.+?)<\/span>/is", $str, $matches);
:私はそれは同様のケースだったと思う

私は1つのような解決策(複数可)を試してみました

私のテキストファイルの例を次に示します。

$ U($ Uが間に何もビーイング:

<span>Wolf</span>Hey guys how are rawr 
 
<span>Harry</span><img src='smiles/heart.png'/> 
 
<span>Harry</span>My heart belongs to Conny 
 
<span>Conny</span>Awww cute! 
 
<span>Xander</span>Grow up Conny… 
 
<span>Zoro</span>I will chase you!

私の出力は次のようにしたいと思いますタグ。この場合、ユーザー名など。ハリー)、$ Xは、($ Xのメッセージの数であるハリーが2つのメッセージであるために上記の私の例から、書いた)メッセージ

答えて

0

あなたはこのようないくつかのカスタムコードを使用することができます。

preg_match_all("#<span>(.+)</span>#iU", $content, $matches); 

$nbComments = array(); 
foreach($matches[1] as $match) { 
    if(! isset($nbComments[$match])) { 
     $nbComments[$match] = 0; 
    } 

    $nbComments[$match]++; 
} 

foreach($nbComments as $user => $nbComment) { 
    echo sprintf("%s wrote %d messages<br />", $user, $nbComment); 
} 

は、作業コードを参照してください。 https://eval.in/755234

+0

$ contentsは私の.txtファイルから取得した情報を格納するmy変数です。出力は: sdeこんにちは人どのようにあなたはハリーこんにちは Awwwかわいい! Xanderこんにちは... ゾロコードを追加しても、残念ながらPHPファイルの出力に何も変わりません。 –

+0

評価テンプレートが見つかりましたか?それは動作しているようだ –

+0

それは評価テンプレートで動作します。しかし、私が前に述べたように、上記のように私の場合、変数はforeachループから取ったStringを格納しています。たぶん私は間違いをした。私はそれを見て、私の問題を解決しようとします –

0
<html> 
<head> 
<title> 
</title> 
</head> 
<body><?php 

foreach (glob("*.txt") as $filename) { 
    echo "<br> $filename size " . filesize($filename) . "\n"; 
    $contents = (file_get_contents($filename)); 

preg_match_all("#<span>(.+)</span>#iU", $contents, $matches); 

$nbComments = array(); 
foreach($matches[1] as $match) { 
    if(! isset($nbComments[$match])) { 
     $nbComments[$match] = 0; 
    } 

    $nbComments[$match]++; 
} 

foreach($nbComments as $user => $nbComment) { 
    echo printf("%s wrote %d messages<br />", $user, $nbComment); 
} 

    } 


?> 
</body> 
</html> 

これは今述べたように機能しています。答えのご返信ありがとうございました。

関連する問題