好的,所以说我在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
s的所有实例替换为自己以及具有相同name
值的value
和id
属性,如下所示:
<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
似乎无效。
答案 0 :(得分:1)
您需要使用正则表达式来抓住这个:
<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']); ?>">