我正在寻找创建一个perl脚本,我将在JavaScript文件上运行以自动更改(')来破坏脚本。
示例:
file.js
document.writeln('» <a href="/LINK1" TARGET="_blank">Lorem ipsum lorem 1</a><br>');
document.writeln('» <a href="/LINK2" TARGET="_blank">Lorem ipsum lor'em x em 2</a><br>');
document.writeln('» <a href="/LINK3" TARGET="_blank">Lorem ipsum lorem 3</a><br>');
在第二行“Lorem ipsum lor'em x em 2”中包含一个单引号,将通过脚本删除。其余的单引号将像“document.writeln('”
答案 0 :(得分:3)
尝试使用正则表达式:
$data =~ s/
(?<! # negative look-behind
\( # ensure no open parenthesis behind
)
' # a quote mark
(?! # negative look-ahead
\) # ensure no close parenthesis ahead
)
/\\'/xsg;
这将需要你的第二行:
document.writeln('» <a href="/LINK2" TARGET="_blank">Lorem ipsum lor'em x em 2</a><br>');
并输出:
document.writeln('» <a href="/LINK2" TARGET="_blank">Lorem ipsum lor\'em x em 2</a><br>');
一个简单的脚本可能是:
while ( <> ) {
$_ =~ ... # regular expression given above
print $_;
}
您可以输入以下命令来运行:
perl myscript.pl file.js
答案 1 :(得分:0)
最简单的方法是替换所有'
然后替换掉安全的那些,类似于:
s/'/\\'/g; # replace all single quotes
s/document.writeln(\\'/document.writeln('/g; # revert safe occurrences
显然,这样的解决方案是一个快速而肮脏的解决方案,只有在您对输入进行控制时才会起作用,如果输入格式不为人所知,则会失败。