Vqmods 偏移值用于替换一行和后面的 x 行,但仅搜索一行。Vqmod 在搜索中不匹配多行。
例子 :
输入
public function index() {
$a = rand();
$b = rand();
if ($a == $b) {
echo 'oh noes';
return false;
}
}
脚本
<?xml version="1.0" encoding="UTF-8"?>
<modification>
<id>Replace many lines with one</id>
<version>1.0</version>
<vqmver>2.X</vqmver>
<author>xxx</author>
<file name="path/to/testfile.php">
<operation info="Replace index function">
<search position="replace" offset="7"><![CDATA[
public function index() {
]]></search>
<add><![CDATA[
public function index($arr = array()) {
foreach ($arr as $a) {
echo $a;
}
}
]]></add>
</operation>
</file>
</modification>
输出
public function index($arr = array()) {
foreach ($arr as $a) {
echo $a;
}
}
注意:仍然有 7 个空行。偏移量会清除输入中额外的 7 行代码,但会添加替换的代码来代替初始行。所以新代码后面会有7个额外的空格,但不会影响代码功能,只是vqcache文件的外观无关紧要。