3

NodeJS を使用して、バックエンドで文字列からタグを削除する方法を探しています。ここでのいくつかの回答は試してみることを提案していますnode-validatorが、ドキュメントも回答も具体的な使用方法を説明していません。

たとえば、次のような変数に文字列があります。

入力:

var text = '<p><b>Hello there!</b> I am a string <span class="small">but not a very exciting one!</span></p>'

望ましい出力:

var newText = Hello there! I am a string but not a very exciting one!

ドキュメントにはいくつかのnode-validatorオプションがありますが、最も適切なのは機能だと思いますtrim()

var check = require('validator').check,
    sanitize = require('validator').sanitize

//Validate
check('test@email.com').len(6, 64).isEmail();        //Methods are chainable
check('abc').isInt();                                //Throws 'Invalid integer'
check('abc', 'Please enter a number').isInt();       //Throws 'Please enter a number'
check('abcdefghijklmnopzrtsuvqxyz').is(/^[a-z]+$/);

//Sanitize / Filter
var int = sanitize('0123').toInt();                  //123
var bool = sanitize('true').toBoolean();             //true
var str = sanitize(' \t\r hello \n').trim();       //'hello'
var str = sanitize('aaaaaaaaab').ltrim('a');         //'b'
var str = sanitize(large_input_str).xss();
var str = sanitize('&lt;a&gt;').entityDecode();      //'<a>'

これを使用して、文字列からタグ (およびクラス) を削除することは可能ですか?

EDIT:私もcheerio(本質的にjquery)をロードし、次のようなものを使用しようとしていました:

HTML
<div class="select">
<p><b>Hello there!</b> I am a string <span class="small">but not a very exciting one!</span></p>
</div>

JAVASCRIPT
(function() {
    var text = $(.select *).each(function() {
        var content = $(this).contents();
        $(this).replaceWith(content);
    }
    );
    return text;
}
());

しかし、これは'Object '<p><b>Hello....' has no method "contents"'エラーになります。jQuery の方が簡単な場合は、同様の関数を使用することにオープンです。

4

3 に答える 3

7

string.jsノード モジュールを使用して、目的の出力を取得できます 。ノードを使用してインストールできます

これが私が使用したコードです->

var S = require('string');
var text = '<p><b>Hello there!</b> I am a string <span class="small">but not a very exciting one!</span></p>';
console.log(text);
text = S(text).stripTags().s;
console.log(text);

出力-

<p><b>Hello there!</b> I am a string <span class="small">but not a very exciting one!</span></p>
Hello there! I am a string but not a very exciting one!

string.js のインストール方法

npm install --save string

さらなる参照

于 2014-12-29T09:32:09.723 に答える
2

node-validator には、HTML タグの削除が組み込まれtrim()ているようには見えません。削除する個々の文字しか指定できないように見えるため、機能しません。非常に簡単に拡張できるため、HTML タグを取り除く拡張機能を作成できます。

それ以外の場合は、cheerio .text()( docs ) メソッドを使用して、要素とその子孫の結合されたテキスト コンテンツを取得できます。

このようなものが動作するはずです:

$('.select *').each(function() {
    var content = $(this).text();
    $(this).replaceWith(content);
}

これにより、 内のすべての html が削除されます。 も置き換えたい場合は.select、 を削除します。*.select

于 2013-06-05T10:30:46.657 に答える