web-dev-qa-db-ja.com

1人の投稿者による投稿およびコメントの全単語数

投稿+タグ+コメント内の単語を数え、各作者が使用した単語の総数を表示するにはどうすればよいですか?

2
user55179

いくつかのクエリとコードスニペットを実行して、投稿コンテンツのWord数、コメントの内容、各投稿のタグ名を計算します。

// This query will return the number of words in the post content
$post_qry="SELECT LENGTH(post_content) - LENGTH(REPLACE(post_content, ' ', ''))+1 
from wp_posts where ID=".$post_id;
// This query will return the number of words in all comments for this post
$comment_qry="SELECT SUM(LENGTH(comment_content) - LENGTH(REPLACE(comment_content, ' ', ''))+1) 
from wp_comments where comment_post_ID=".$post_id;

$post_tags = get_the_tags();
$tag_words=0;
if ($post_tags) {
  foreach($post_tags as $tag)
  {
    $parts=explode(' ',$tag->name);
    $tag_words+=count($parts);
  }
}
$total_words=$post_words+$comment_words+$tag_words;

私はクエリを実行するためのコードを含めませんでした。なぜなら、誰もが独自の方法でそれを実行しているようだからです。このアプローチの最大の欠点は、スペースで区切られたすべての文字列を数えることです。あなたの作者がメディア挿入をすることができるならば、それらのキャプションを付けられた画像/ビデオはWord数を膨らませるでしょう。

完璧に近いものが必要な場合は、クエリをすべてのテキストだけを表示するように変更してください(mysqlではカウントしないでください)。それから、メディアアイテムのようなHTMLとWP特殊コンテンツを取り除くためにいくつかの正規表現関数を実行します。最後に、スペース上の残りの文字列を展開し、配列を数えます。

絶対的な完璧さに到達する方法がわかりません。私にとっては、最初のアプローチで十分です。

1
Ray N. Franklin