下記のような、HTMLファイルのテキストデータの文字数を計算できるソフト、もしくは下記の機能の一部でも実現できているソフトがありましたら教えてください。


<HTMLテキストデータ文字数計算ソフト>
metaタグ内、Bodyタグ内、Alt、title属性内全てのテキストデータを計算可能であり、コンマ、カッコなどは自動除外して計算できるソフト。

回答の条件
  • URL必須
  • 1人5回まで
  • 13歳以上
  • 登録:2010/12/23 17:10:46
  • 終了:2010/12/30 17:15:03

ベストアンサー

id:Cherenkov No.2

Cherenkov回答回数1503ベストアンサー獲得回数4932010/12/24 17:40:32

ポイント70pt

ありものでは無さそうなのでブックマークレットで作ってみました。

Firefoxで文字数を数えたいページを開いたのち、アドレスバーに以下のコードを全てコピペしてエンターキーで実行してください。

(Chromeはツール - JavaScriptコンソールでctrl+vでペーストしてエンター)

metaタグは<meta>を含めた文字数、bodyは<body></body>を抜いた文字数、alt・titleは属性の値の文字数。

コンマ、カッコはよくわからないのでスルー。

コメント欄を有効にして例を示してもらえれば書きます。

どのような目的で文字数をカウントするのかわかるといろいろ配慮したものが作れると思います。

(一部DOMから文字数をカウントしているのでブラウザによって値が変わる場合があります。目的がわからないとなんとも。)


javascript:(function(){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4) {
    if (xhr.status == 200) {
      var metaCharLen = metaCount(xhr.responseText);
      var bodyCharLen = document.body.innerHTML.length;
      var altCharLen = propCharLen('alt');
      var titleCharLen = propCharLen('title');
      alert('meta: ' + metaCharLen + '\nbody: ' + bodyCharLen + '\nalt: ' + altCharLen + '\ntitle: ' + titleCharLen);
    } else {
      console.log("status = " + xhr.status);
    }
  }
}
xhr.open("GET", location.href);
xhr.send();

function metaCount(text) {
  text = text.replace(/<body>[^]+<\/body>/gi,"").replace(/<script.+<\/script>/ig,"").replace(/<title.+<\/title>/ig,"").replace(/<link.+>/ig,"");
  var len = 0;
  var meta = text.match(/<meta .+>/gi);
  if (!meta) return 0;
  meta.forEach(function(e) {
    len += e.length;
  });
  return len;
}
function propCharLen(propName) {
  var len = 0;
  var elem = document.querySelectorAll('['+propName+']');
  for (var i = 0, n = elem.length; i < n; i++) {
    len += elem[i][propName].length;
  }
  return len;
}
})();
id:fengtutian

Cherenkovさん、コメント欄有効にいたしました。 ご回答大変ありがとうございます。

ホームページ(HTMLファイル)上の日本語テキストを外国語への翻訳を依頼するにあたり、翻訳料金設定を日本語文字数に応じて支払う、としたため、ホームページ上の日本語文字数(imgタグのAlt、AタグのTitle等も含む)を計算する必要が出てきまして、今回質問させていただいております。

下記の要望を満たすものが理想的です。

●<Title>2010/12/24 19:12:24

その他の回答(1件)

id:kou32rr No.1

kou32rr回答回数197ベストアンサー獲得回数82010/12/24 14:39:32

PHPプログラムを利用できるのであれば、下記ページにサンプルがありました。

http://d.hatena.ne.jp/steel-plate/20080417/1208445174

ここから文字列をタグ毎に取得して、それぞれで文字数カウントすればOKかと。

id:fengtutian

回答ありがとうございます。PHPはよく分からないので、自分でカスタマイズする必要なく、URLあるいはHTMLファイルを読み込んで自動的にmetaタグ内、Bodyタグ内、Alt、title属性内全てのテキストデータを計算できるソフトはないものでしょうか。

2010/12/24 15:38:30
id:Cherenkov No.2

Cherenkov回答回数1503ベストアンサー獲得回数4932010/12/24 17:40:32ここでベストアンサー

ポイント70pt

ありものでは無さそうなのでブックマークレットで作ってみました。

Firefoxで文字数を数えたいページを開いたのち、アドレスバーに以下のコードを全てコピペしてエンターキーで実行してください。

(Chromeはツール - JavaScriptコンソールでctrl+vでペーストしてエンター)

metaタグは<meta>を含めた文字数、bodyは<body></body>を抜いた文字数、alt・titleは属性の値の文字数。

コンマ、カッコはよくわからないのでスルー。

コメント欄を有効にして例を示してもらえれば書きます。

どのような目的で文字数をカウントするのかわかるといろいろ配慮したものが作れると思います。

(一部DOMから文字数をカウントしているのでブラウザによって値が変わる場合があります。目的がわからないとなんとも。)


javascript:(function(){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4) {
    if (xhr.status == 200) {
      var metaCharLen = metaCount(xhr.responseText);
      var bodyCharLen = document.body.innerHTML.length;
      var altCharLen = propCharLen('alt');
      var titleCharLen = propCharLen('title');
      alert('meta: ' + metaCharLen + '\nbody: ' + bodyCharLen + '\nalt: ' + altCharLen + '\ntitle: ' + titleCharLen);
    } else {
      console.log("status = " + xhr.status);
    }
  }
}
xhr.open("GET", location.href);
xhr.send();

function metaCount(text) {
  text = text.replace(/<body>[^]+<\/body>/gi,"").replace(/<script.+<\/script>/ig,"").replace(/<title.+<\/title>/ig,"").replace(/<link.+>/ig,"");
  var len = 0;
  var meta = text.match(/<meta .+>/gi);
  if (!meta) return 0;
  meta.forEach(function(e) {
    len += e.length;
  });
  return len;
}
function propCharLen(propName) {
  var len = 0;
  var elem = document.querySelectorAll('['+propName+']');
  for (var i = 0, n = elem.length; i < n; i++) {
    len += elem[i][propName].length;
  }
  return len;
}
})();
id:fengtutian

Cherenkovさん、コメント欄有効にいたしました。 ご回答大変ありがとうございます。

ホームページ(HTMLファイル)上の日本語テキストを外国語への翻訳を依頼するにあたり、翻訳料金設定を日本語文字数に応じて支払う、としたため、ホームページ上の日本語文字数(imgタグのAlt、AタグのTitle等も含む)を計算する必要が出てきまして、今回質問させていただいております。

下記の要望を満たすものが理想的です。

●<Title>2010/12/24 19:12:24

  • id:Cherenkov
    <title>の文字数は
    javascript:alert(document.title.length)
    で取れます。

    今回はhtmlタグを含めた文字数ではなくて、html全体から日本語の文字を数えるという方法でよさそうですね。
    htmlファイルの内容をテキストデータとして読み込んで、その中の日本語文字を数えるプログラムのほうがいいと思って
    やってみたのですがうまく動かなかったので夜にまたやってみます。
    日本語文字ならなんらかのエディタを使って全角文字をカウントする方法もあるかもしれません。
  • id:Cherenkov
    お待たせしてすいません。
    ローカルにあるhtmlやテキストファイルを読み込んで文字数カウントするものを作りました。
    要素を指定するのではなく丸ごとフィルタにかける作戦です。日本語として判定された文字は赤く表示されます。
    よかったら試してみてください。

    https://gist.github.com/755357

    ダウンロード方法はリンク先にある「raw」で右クリックメニューから"リンク先を保存"してもらうとjp_counter.htmlというファイルが保存されるので、それをFirefoxで開いてください。今のところなぜかChromeでは動きません。

    使い方は、jp_counter.htmlを開いたらhtmlファイルなどをFirefoxにドラッグアンドドロップするだけです。

    日本語文字の判定は正規表現を使っています。
    読点句読点は日本語として判定してほしくないという場合は
    var regexp = /[ー、。]から消せばOKです。
  • id:fengtutian
    いろいろ丁寧にご回答いただき大変ありがとうございました。
    ベストアンサーとさせていただきます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません