假設我有一個包含一些文本的變量,包括正常HTML標記中的URL。特別是,我對標籤的src =元素感興趣。比方說,我知道我想在這一堆文本中搜索的確切src =字符串,我想用其他一些文本替換它。 。 。這裏是一些什麼我已經試過(僞代碼):如何使用Perl在html中搜索和替換特定的src =「url」標記?
所有的my $bunchotxt = << 'END_MESSAGE';
<a href="http://link.com/image.gif"><img class="alignleft size-thumbnail wp-image-295" src="http://link.com/image.gif" alt="shredding" width="150" height="150" /></a>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis convallis fringilla dui eget cursus. Nullam in mauris viverra elit pharetra fringilla. Pellentesque gravida ligula sit amet magna blandit, semper luctus enim semper. Nam a sem ut ex aliquam consectetur. Nulla enim metus, porta at elementum non, facilisis ullamcorper nisl. Vestibulum sed iaculis ante. Nullam mollis luctus posuere.
Suspendisse ipsum odio, iaculis in malesuada id, varius
END_MESSAGE
my $parser = HTML::TokeParser::Simple->new(
string => $bunchotxt
);
while (my $tag = $parser->get_tag('img')) {
#print $tag->as_is, "\n";
for my $attr (qw(src)) {
$replaceStr = sprintf qq{%s="%s"\n}, $attr, $tag->get_attr($attr);
$parsedtag =~ s/"//g;
my @bits = $url->path_segments();
$cidreplace{$unparsedtag} = $path;
}
my $replaceStr = "src:\"replaced\"";
$bunchotxt =~ s/$findURL/$replaceStr/g;
print "$buchotxt\n";
}
然後你只需要你想匹配的字符串相匹配。你忽略了原始文件中的'''字符 – Quentin
你在搜索模式中的第一個雙引號出現在錯誤的地方,並且你不需要轉義'='或':',但是你需要轉義''.'在這種情況下,因爲你想匹配一個字面點。 –
男人,我希望我可以重新發布這個問題的方式,它真的應該被問到。在代碼中我試圖去工作,$ findstr字符用另一個使用HTML :: Tokeparser :: Simple的循環來填充來自原始文本的所有src =元素的列表,因此$ findstr最終具有從代碼的Tokeparser部分返回的值的值。我已經試着用quotemeta()逃脫了,但是這似乎沒有什麼區別,希望你願意再次明白這一點。 – 2crd3o