html - 将具有特定 ID 的 HTML 表单封装在新标签中

标签 html forms perl replace

我有一个 Perl 脚本,可以解析 HTML 并修改内容。我想更新下面的脚本,将 noindex 标签包裹在页面上的特定 ID 周围。

相关 Perl 信息

undef $/;
my $doc = <>;

if ($main::atomz_search_url=~ m{mydomain.com/(.+?)/support}si) 
{
$doc =~ s{<div id="header">}{<div id="header" class="noindex">}sig;
}

当前 HTML

<form id="search" action="../results.html" method="post">
  <fieldset>
        ...
  </fieldset>
</form>

我只是想找到ID为“search”的FORM,并用noindex标签包装整个FORM block (包括原始内容)。

<noindex>
 <form id="search" action="../results.html" method="post">
  <fieldset>
        ...
  </fieldset>
 </form>
</noindex>

注意:我只能使用核心模块,因此 Mojo 不是一个选项。

最佳答案

放下正则表达式并获得为此目的而设计的东西。例如 Mojo::DOM。

use Mojo::DOM;
my $dom = Mojo::DOM->new($doc);
$dom->at("#search")->wrap("<noindex></noindex>");
say $dom;

关于html - 将具有特定 ID 的 HTML 表单封装在新标签中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36655733/

相关文章:

html - 在 div 中水平放置文本图像

perl - 在备用 X11 显示器上打开弹出菜单时 Gtk3 崩溃

javascript - 如何使用javascript更改html中元素的顺序

javascript - 使用 Javascript 将 FORM_1 (page1.html) 的数据传递给 FORM_2 (page.html)

jquery - 使用 jquery mobile 自动调整内容页面大小

c# - 主窗体出现时如何关闭登录窗体?

javascript - 表单验证应该如何工作?

jquery - 无论标签长度如何,在 Bootstrap 3 中排列单选按钮

perl - 二分搜索 - 在使用严格引用时不能使用字符串 "1"作为符号引用

Perl 中的 XML Pull 解析器实现?