-1

何が必要かを理解するために、以下のコードを使用してコンテンツを解析しています

タグを付けて各文をタグで囲み、ページ上の文を操作できるようにします。

$('p').each(function() {
        var sentences = $(this)
            .text()
            .replace(/(((?![.!?]['"]?\s).)*[.!?]['"]?)(\s|$)/g, 
                     '<span class="sentence">$1</span>$3');
        $(this).html(sentences);
    });

ただし、次の行は私の問題を示しています。

<p>This is a <a href="#">link</a> and it is removed with the above code! Here is another sentence.</p>

<a>、<img> などのネストされたタグ ... 検索中の <p> タグ内は、使用しているコードで削除されます。<p> タグ内のコンテンツが変わらないように、これらのタグをそのままにしておく必要があります。

私は欲しい:

<p><span class="sentence">This is a <a href="#">link</a> and it is removed with the above code!</sentence><sentence>Here is another sentence.</sentence></p>

正規表現を使用した HTML の解析に関するこのバーンバーナーを読んだ後、ある種の HTML パーサーの組み合わせを使用して <p> タグ内のサブタグを走査し、正規表現を使用して検索する必要があると結論付けました文章。上記の正規表現は、私の用途のほとんどで機能するはずです。

だから:どうすればいいですか?

4

2 に答える 2

-1

タグをそのまま保持したい場合は、.text() の代わりに .html() を使用する必要があります。以下のコードを確認して、うまくいかない場合はお知らせください。 デモ

$('p').each(function() {
        var sentences = $(this)
            .html()
            .replace(/(((?![.!?]['"]?\s).)*[.!?]['"]?)(\s|$)/g, 
                     '<span class="sentence">$1</span>$3');
        $(this).html(sentences);
    });
于 2013-05-15T05:33:02.780 に答える