0

次のような醜い html がプログラムにメールで送信されます。

<html>
    <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    </head>
    <body>
        Saved search results.<br>
    <br>
    Name: 'Some splunk search' <br>
    Query Terms: 'tag=foo NOT BAR=\&quot;Boom\&quot;' <br>
    Link to results: <a href="https://foo/search/blahblahblah">
    https://foo/search/blahblahblah</a>
    <br>
    <br>
    <table border="1">

...簡潔にするために残りを切り取りました。

HTML::TreeBuilder を使用してテーブル要素を引き出すことはできますが、他の手段に頼らずに「名前:」と「クエリ用語」を上から引き出す方法がわかりません。

上記の $root->dump は次のようになります。

<html> @0
  <head> @0.0
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> @0.0.0
  <body> @0.1
  <p> @0.1.0 (IMPLICIT)
     " Saved search results. "
     <br /> @0.1.0.1
     <br /> @0.1.0.2
     " Name: 'Some splunk search' "
     <br /> @0.1.0.4
     " Query Terms: 'tag=foo NOT BAR=\"Boom\""

@0.1.0.2 と @0.1.0.4 の間の裸のテキストを取得する方法はありますか

ありがとう!トッド

4

1 に答える 1

0

テキストにパターンがある場合は、HTML解析と正規表現を組み合わせて使用​​する方が簡単な場合があります。

my $body_text = $body->as_text(skip_dels => 1);

my ($name) = ($body_text =~ m#Name: '([^']+)'#s);
my ($query_terms) = ($body_text =~ m#Query Terms: '([^']+)'#s);
于 2013-02-08T19:48:32.977 に答える