javascript - 将 href perl 变量转换为普通标量变量

标签 javascript html perl cgi

我正在尝试比较这两个变量。它们都有相同的值,但是,其中一个是 href 变量 - 意思是,它是从这样的文件中读取的

<a href=http://google.com>Variable</a>

它的读取方式如下,但在浏览器中显示为 anchor 标记,因此当我使用 print "$collect_zids{$key} --> $temp"; 比较值时;I在浏览器中看到为

变量 --> Variable

How it appears in the browser. One text another link.

我假设这两个值不同,因此该代码无法运行

if($collect_zids{$key} eq $from_picture){
    print "<h1>Hello</h1>";
}

有没有办法可以将 href 变量转换为普通标量变量,以便我可以比较它们?

谢谢!

附注我认为 Javascript 可能是唯一的方法,但是我没有任何经验。

最佳答案

不存在“href 变量”这样的东西。您有两个标量变量。一种包含纯文本,另一种包含 HTML。您的任务是提取 HTML <a> 中的文本HTML 变量中的标记,并将该文本与纯文本变量中的文本进行比较。

一种方法是从 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]";
}

还值得指出的是,这个问题在 Perl FAQ 中得到了解答。

How do I remove HTML from a string?

Use HTML::Strip, or HTML::FormatText which not only removes HTML but also attempts to do a little simple formatting of the resulting plain text.

更新:在评论中,您说

I have no way of using these methods since I am not explicitly defining the variable.

这显然是不正确的。变量的初始化方式与您如何使用它没有任何关系。

我假设您的 HTML 文本位于变量 $from_picture 中,因此您可以使用如下代码剥离 HTML:

my $parser = HTML::Strip->new;
my $stripped = $parser->parse($from_picture);

if($collect_zids{$key} eq $stripped){
  print "<h1>Hello</h1>";
}

我不知道您从哪里得出不能使用我的解决方案的想法,因为我直接初始化变量,您从文件中读取数据。编程的一项重要技能是能够看透复杂的情况并提取相关细节。看来你需要在这方面做更多的工作:-)

关于javascript - 将 href perl 变量转换为普通标量变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47032546/

相关文章:

java - Spring Boot 无法在/resources/static/images 文件夹中找到图像

perl - cpan 和 cpanm 有什么区别?

perl - 如何使用 CAM::PDF 获取 PDF 页面中文本字符串的文本方向?

javascript - 为什么这个进度条更新后是 'flickering',我该如何解决?

javascript - 无法通过 jsoup 从 html 中提取我想要的元素

javascript - JavaScript中有字典数据类型吗?

html - 除第一行外,在表格周围放置边框

perl - 内联::C 构建失败

javascript - Accordion - 隐藏已打开

javascript - 零剪贴板不工作。 ZeroClipboard.setMoviePath 不是函数