好的,假设我在HTML文件中有一堆input
:
<input class="form-control" type="text" id="ogwb">
<input class="form-control" type="text" id="aosgh">
<input class="form-control" type="text" id="aghw">
我如何用自己和具有相同id
值的name
和value
属性替换id
s的所有实例,如:
<input class="form-control" type="text" id="ogwb" name="ogwb" value="<?php echo htmlspecialchars($_POST['ogwb']); ?>">
<input class="form-control" type="text" id="aosgh" name="aosgh" value="<?php echo htmlspecialchars($_POST['aosgh']); ?>">
<input class="form-control" type="text" id="aghw" name="aghw" value="<?php echo htmlspecialchars($_POST['aghw']); ?>">
这是我尝试过的:
f = File.read('my.html')
$arr = f.scan(/id="([^"]*)"/)
$arr.each{ |a|
e_ = a.join(", ")+'"'
e__ = a.join(", ")+'"'+' name="'+a.join(", ")+'" value="<?php echo htmlspecialchars($_POST['+"'"+a.join(", ")+"'"+']); ?>"'
f.gsub(/#{e_}/,e__)
}
如果我做puts e_
和puts e__
,我得到匹配和替换我想要的,但gsub
似乎不起作用。
您将需要使用正则表达式抓取这个:
<input class="form-control" type="text" id="([^"]+)">
注意,我用一个捕获组(括号)包围了id的文本值。这是捕获组#1
您可以使用1
访问第一个捕获的组。
所以你需要在中搜索之前的正则表达式,然后用以下内容替换:
<input class="form-control" type="text" id="1" name="1" value="<?php echo htmlspecialchars($_POST['1']); ?>">
示范:https://regex101.com/r/qeHkmg/1
文档:http://www.regular-expressions.info/replacebackref.html