Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将href perl变量转换为普通标量变量_Javascript_Html_Perl_Cgi - Fatal编程技术网

Javascript 将href perl变量转换为普通标量变量

Javascript 将href perl变量转换为普通标量变量,javascript,html,perl,cgi,Javascript,Html,Perl,Cgi,我正试图比较这两个变量。它们都有相同的值,但是,其中一个是href变量——意思是,它是从这样的文件中读取的 <a href=http://google.com>Variable</a> 有没有办法将href变量转换为普通标量变量,以便进行比较 谢谢 另外,我认为Javascript可能是唯一的方法,但是,我对它没有任何经验。没有“href变量”这样的东西。有两个标量变量。一个包含纯文本,另一个包含HTML。您的任务是从HTML变量中提取HTML标记内的文本,并将该文本与

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

<a href=http://google.com>Variable</a>
有没有办法将href变量转换为普通标量变量,以便进行比较

谢谢


另外,我认为Javascript可能是唯一的方法,但是,我对它没有任何经验。

没有“href变量”这样的东西。有两个标量变量。一个包含纯文本,另一个包含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

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]";
}

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

没有“href变量”这样的东西。有两个标量变量。一个包含纯文本,另一个包含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

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]";
}

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

我使用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.
在使用
HTML::FormatText
模块后,我能够获取正在读取的原始字符串,而不是将其解释为HTML。因此,我得到的是
返回值,而不仅仅是
变量
。在获得原始字符串之后,我可以使用正则表达式提取我需要的部分


归功于-

我使用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.
在使用
HTML::FormatText
模块后,我能够获取正在读取的原始字符串,而不是将其解释为HTML。因此,我得到的是
返回值,而不仅仅是
变量
。在获得原始字符串之后,我可以使用正则表达式提取我需要的部分


“相同的值”是指一个人有
的值吗http://google.com“
其中一个值为
-因为它们不一样!您是否在问如何用Perl解析HTML以便提取
元素的文本内容?我指的是相同的值,例如,一个是具有值“Foo Bar”的标量变量<代码>$var=“Foo-Bar”$var2=
。因此,如果我使用
print“$var-$var2”
在浏览器中打印这两个,我将得到
foobar-foobar
。但唯一的问题是,一个是文本值,另一个是锚定。因此,当我使用
if($var eq$var2){print“hi”}
比较它们时,它不会返回true。两者都是文本值。一个只是有更多的文字在里面。去找一个HTML解析器库,这样你就可以从HTML中提取你关心的文本,然后再尝试将其与其他值进行比较。我在问题中添加了一幅图片来显示它是如何出现的。通过“相同的值”,你是指一个人具有值
http://google.com“
其中一个值为
-因为它们不一样!您是否在问如何用Perl解析HTML以便提取
元素的文本内容?我指的是相同的值,例如,一个是具有值“Foo Bar”的标量变量<代码>$var=“Foo-Bar”$var2=
。因此,如果我使用
print“$var-$var2”
在浏览器中打印这两个,我将得到
foobar-foobar
。但唯一的问题是,一个是文本值,另一个是锚定。因此,当我使用
if($var eq$var2){print“hi”}
比较它们时,它不会返回true。两者都是文本值。一个只是有更多的文字在里面。查找HTML解析器库,以便在尝试将HTML与其他值进行比较之前,可以从HTML中提取所关心的文本位。我在问题中添加了一幅图片,以显示它的外观。我没有在运行if条件的同一块中定义锚定标记。如问题中所述,正在从文件中读取锚定标记。因为它是一个cgi脚本,所以当文件中出现
时,它只输出变量。我没有办法使用这些方法,因为我没有明确定义变量。不过,我感谢你的帮助。Perl常见问题解答让我找到了正确的方向,因此感谢您@user330134:我没有在运行if条件的同一块中定义锚定标记-我没有说你是。我这样做只是为了更容易证明发生了什么。正如问题中提到的,锚定标签正在从文件中读取-我意识到这一点。你说得很清楚。但这对我的回答没有影响。我没有办法使用这些方法,因为我没有明确定义变量——这是不对的。我尝试了你的第一个方法,但它对我不起作用。但是,我没有尝试使用
HTML::Strip
模块,因为我没有使用私有服务器,因此没有安装该模块。但是,我相信您的第二个方法是有效的,因为我可以访问
HTML::FormatText
我使用了该方法并为其编写了一个答案。@user330134:我的第一个方法有效。但除非你表现出来