1

特定の Web サイトから情報を取得するブックマークレットを作成したいと考えています。

$('#div').text();div 内にある html 要素を使用して回避した後、次の文字列を取得します。

                  TOP-GOST d.o.o.

                  Tel:

              01 200 50 80 , 041 843 303

                  E-mail: 
                      info@via-bona.com

                Spletna stran podjetja


                  Tbilisijska ulica 59
                  1000 Ljubljana 
                  Slovenija

ご覧のとおり、1 つの大きな文字列内に不要なスペースとさまざまな情報が多数含まれています。私がやりたいことは、すべてのスペースを削除し、不要な情報 (Tel:、E-mail:、Spletna stran podjetja など) を削除し、重要な情報をカンマで区切ること','です。

情報のすべての独立した部分を独自の変数に入れることは可能ですか? 私の解決策は、断片がコンマで接着された後、php's explode()javascript に似た、または反転したものになります。join()

不要な部分の削除については、 .replace().良いアイデアを使用していますか?

望ましい結果:

variable one_string = 'TOP-GOST d.o.o., 012005080, 041843303, info@via-bona.com, Tbilisijska u...';

AND LATER

variable title = 'TOP-GOST d.o.o.'
variable phone = '012005080,041843303'
variable email = 'info@via-bona.com'

etc.

元のソース コード HTML:

<div class="offer-contact">
<h3 class="offer-company">
    TOP-GOST d.o.o.</h3>
<strong>
    Tel:
</strong>
01 200 50 80 , 041 843 303<br>
<strong>
    E-mail:</strong> <a href="mailto:info@via-bona.com">
        info@via-bona.com</a><br>
<strong>
<a href="http://www.via-bona.com" target="_blank">Spletna stran podjetja</a><br>

</strong></div><strong>                               

<div class="offer-map">
<p>
    Tbilisijska ulica 59<br>
    1000 Ljubljana <br>
    Slovenija<br>

</p>
</div>
4

2 に答える 2

3

$('#div').text();div内にあるhtml要素を避ける

HTML 構造を破棄せずに使用しないのはなぜですか? にアクセスする代わりに、... に個別に$('#div')アクセスしてみませんか? ID はなくても構造が安定している場合は、一種のセレクターを使用して探しているものを特定できます。$('#phone')$('#email')$('#div > div:nth-child(3)')

編集:構造を確認できるようになりました:

var title = $('.offer-company').text().trim();
var email = $('.offer-contact a').attr('href').trim();
var address_array = $.map($('.offer-map p').html().split('<br>'), function(v) {
  var t = v.trim();
  if (t.length) return t;
});
// Phone is trickier; it's not in a tag by itself. So, this
// is the more reliable method (get rid of everything else):
var $offer = $('.offer_contact').clone();
$offer.find('.offer-company, strong, br, a').remove()
var phone_array = $.map($offer.html().split(','), function(v) {
  var t = v.trim();
  if (t.length) return t;
});
// The alternative would have been to go with regexp, which
// is not recommended for cutting up HTML.

このような何かがそれを行う必要があります。住所または電話番号のカンマ区切りの文字列が必要な場合は、それを行うことができますaddress_array.join(', ')(電話の場合も同様)。

于 2013-09-02T23:29:32.163 に答える
2

次のように連続する空白を削除してみてください。

$('#div').text().replace('\n', ' ').replace(/\s\s*/g, ' ');

デモ

于 2013-09-02T23:34:53.257 に答える