"href変数"のようなものはありません。スカラー変数は2つあります。 1つはプレーンテキストを含み、もう1つはHTMLを含む。あなたの仕事は、HTML <a>
タグ内のテキストをHTML変数から抽出し、そのテキストをプレーンテキスト変数のテキストと比較することです。
これを行う1つの方法は、HTML変数からHTMLを削除することです。
my $html = '<a href=http://google.com>Variable</a>';
my $text = 'Variable';
$html =~ s/<.+?>//g;
if ($html eq $text) {
say "Equal";
} else {
say "Not Equal [$html/$text]";
}
しかし、正規表現を使用してHTMLを解析することは非常に脆弱であり、多くの場合では動作しないことが保証されていることを十分に強調することはできません。実際のHTMLパーサーを使用するほうがずっと優れています。 HTML::Stripがこの目的のために作られています。
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
use HTML::Strip;
my $html = '<a href=http://google.com>Variable</a>';
my $text = 'Variable';
my $parser = HTML::Strip->new;
$html = $parser->parse($html);
if ($html eq $text) {
say "Equal";
} else {
say "Not Equal [$html/$text]";
}
それは、これはどのように私は、文字列からHTMLを削除するにはPerl FAQ
に答えていることを指摘も価値がありますか?
使用HTML ::ストリップ、またはHTML :: FormatText HTMLが削除されますが は、得られるプレーンテキスト の少し簡単な書式設定を行うにしようとしないだけ。
アップデート:コメントで、私は明示的に変数を定義しておりませんので、私はこれらのメソッドを使用する方法がありません
を言います。
これは明らかに真実ではありません。どのように変数を初期化するかは、どのようにそれを使うことができるかには何の影響もありません。
私はあなたがこのようなコードでHTMLを取り除くでしょうので、あなたのHTMLのテキストは、変数$from_picture
であると仮定します。
my $parser = HTML::Strip->new;
my $stripped = $parser->parse($from_picture);
if($collect_zids{$key} eq $stripped){
print "<h1>Hello</h1>";
}
私はあなたが私のソリューションを使用することができませんでしたアイデアを得た見当がつかないファイルからデータを読み込んでいた変数を直接初期化していたからです。プログラミングの重要なスキルは、複雑な状況を見て、関連する詳細を抽出する能力です。あなたが、私は生の文字列を取得することができた私はHTML::FormatText
モジュールを使用した後のPerlモジュールHTML::FormatText;
use HTML::FormatText;
my $formatter = HTML::FormatText->new();
my $string = HTML::FormatText->format_file("path_to_the_file"); #$string variable to hold the result and the path must be for a file.
を使用して答えを見つけることが
あなたは、1つの値 '「http://google.comを」'持ち、1が値 '」http://google.com'を持っている意味ですか - それらがあるので** **同じではありません!あなたは ''要素のテキストコンテンツを抽出できるようにPerlでHTMLを解析する方法を尋ねていますか? – Quentin
同じ値で、私は意味します。例は1つのスカラー変数です。 "$ var =" Foo Bar ";そしてもう一つは' $ var2 = Foo Bar 'なので、' print "$ var - $ var2" 'を使って両方をブラウザに表示すると、 'Foo Bar - Foo Bar'ですが、唯一の問題はテキスト値とアンカーなので、' if($ var eq $ var2){print "hi"} 'を使って比較すると、それは後退しませんn本当です。 – user3302134
両方ともテキスト値です。 1つはちょうどより多くのテキストがそれにある。 HTMLパーザーライブラリを見つけて、それを他の値と比較しようとする前にHTMLから気にするテキストの部分を抽出することができます。 – Quentin