我遇到了一个问题,我需要搜索一行太常见的代码。
假设我有这段代码,需要将其转换为 array_merge:
$this['data'][] = array(
'firstname' => $query->row['firstname'],
'lastname' => $query->row['lastname'],
'company' => $query->row['company'],
'company_id' => $query->row['company_id']
);
vqmod
<operation>
<search position="replace"><![CDATA[
$this['data'][] = array( ]]></search>
<add><![CDATA[
$this['data'][] = array_merge($data, array( ]]></add>
</operation>
<operation>
<search position="replace"><![CDATA[
); ]]></search>
<add><![CDATA[
)); ]]></add>
</operation>
问题在于它试图搜索太常见的代码。
我可以使用偏移量来替换整个东西,因为我们使用其他扩展来修改同一个数组。也不能相信 company_id 总是最后的。
所以相反,我在想是否有一种方法可以搜索两次或类似于这个概念:
- 搜索:
$this['data'][] = array(
找到这个的行号。 - 然后从此行号开始下一次搜索,找到下一次出现的:
);
然后可以将相同的想法应用于我想在返回数据之前添加一些逻辑的方法。
<operation>
<search position="before"><![CDATA[
private static function _cacheName ]]></search>
<search2><![CDATA[
return ]]></search2>
<add><![CDATA[
// custom code ]]></add>
</operation>