0

htmlドキュメントのフリーテキストを抽出するためにhtmlパーサー(Neko)を使用します。私はテキストのセマンティクスに興味があるので、ブラウザに表示される単語間の距離に特に注意を払う必要があります。

例えば:

<H1>My
title</H1>
<P>Hello
                World</P>

次のようにレンダリングされます:

My title
Hello world

<pre>タグ内またはスタイル付きの段落を含む場合:

<style>
p { white-space:pre; }
</style>

結果は次のようになります。

My title
Hello
                    World

「こんにちは」は意味的に「世界」という言葉に結び付けられていないので、私はこれを別の方法で扱いたいと思います。他の投稿で述べたように、構文解析とレンダリングには違いがあります。明らかに解析はブラウザに表示されるように空白を折りたたむことはないので、レンダリング後に表示される単語間の接続に興味があります。

ブラウザで読み取られるときにhtmlから空白が折りたたまれたテキストを抽出する方法はありますか?

4

2 に答える 2

0

これまでNekoを使用したことはありませんが、要素のスタイルにアクセスして、white-spaceプロパティが、、、またはprelinepreに設定されているかどうかを確認する必要があります。pre-wrap

  1. preまたはの場合はpre-wrap、テキスト内の空白グループを1つのスペースに置き換えます。

  2. それ以外の場合pre-lineは、スペース/タブのグループのみを単一のスペースに置き換えます。

  3. それ以外の場合は、テキストを変更しないでください。

JQueryを使用した例を次に示します:JSFiddle

JQuery

function getRenderedText(obj) {
    var text = obj.text();
    var renderedText;
    switch (obj.css('white-space')) {
        case 'pre':
        case 'pre-wrap':
            renderedText = text;
            break;
        case 'pre-line':
            renderedText = text.replace(/[ \t]+/,' ');
            break;
        default:
            renderedText = text.replace(/\s+/,' ');
    }
    return renderedText;
}
于 2013-03-12T13:17:53.717 に答える
0

w3schoolsに関するこの基本情報を見てください

http://www.w3schools.com/cssref/pr_text_white-space.asp

例を使ってもう少し詳しく説明します。

http://css-tricks.com/almanac/properties/w/whitespace/

また、エフェクトを機能させるには、ハローを1<p>に、ワールドを別の1に配置する必要があると思います。それ以外の場合は、両方とも右に移動します。

于 2013-03-12T13:08:54.683 に答える