我需要在45个PHP文件中修改~50行代码。
在文件中替换的代码以及新代码在所有PHP文件中都是相同的,但代表不同的行。
因此,我不能使用补丁,因为有多行包含像", ', @, [, ]
等字符。我没有使用sed以及它将特殊字符解释为正则表达式等,只是弄乱了我的文档。
有没有办法我可以从控制台进行批量替换,而无需转义我的整个代码块?
特别是:
// BEGINN ENERGIEAUSWEIS
$sql_energiepass="select * from openimmoDB.energieausweis where openimmo_obid='".$row["openimmo_obid"]."'";
$result_energiepass= mysql_query($sql_energiepass);
if (!$result_energiepass) {
trigger_error("Konnte das Erzeugen des Energiepasses nicht ausfuehren!\n\r" .mysql_error()."\n\r".$sql_energiepass."\n\r");
}
else
{
$row_energiepass = mysql_fetch_array ( $result_energiepass );
}
$energiepass=$zustand_angaben->addChild('energiepass');
$energiepass->addChild('epart', $row_energiepass["energieausweis"]);
$energiepass->addChild('gueltig_bis', "");
$energiepass->addChild('energieverbrauchkennwert', $row_energiepass["wert"]);
$energiepass->addChild('mitwarmwasser', "");
$energiepass->addChild('endenergiebedarf', $row_energiepass["wert"]);
$energiepass_e1=$zustand_angaben->addChild('user_defined_simplefield', "");
$energiepass_e1->addAttribute('feldname','epass_stromwert');
$energiepass_e2=$zustand_angaben->addChild('user_defined_simplefield', "");
$energiepass_e2->addAttribute('feldname','epass_waermewert');
$energiepass_e3=$zustand_angaben->addChild('user_defined_simplefield', $row_energiepass["effizienzklasse"]);
$energiepass_e3->addAttribute('feldname','epass_wertklasse');
$energiepass_e4=$zustand_angaben->addChild('user_defined_simplefield', $row_energiepass["baujahr"]);
$energiepass_e4->addAttribute('feldname','epass_baujahr');
$energiepass_e5=$zustand_angaben->addChild('user_defined_simplefield', $row_energiepass["strom"]);
$energiepass_e5->addAttribute('feldname','epass_stromwert');
$energiepass_e6=$zustand_angaben->addChild('user_defined_simplefield', $row_energiepass["waerme"]);
$energiepass_e6->addAttribute('feldname','epass_waermewert');
// ENDE ENERGIEAUSWEIS
应改为:
// BEGINN ENERGIEAUSWEIS
$sql_energiepass="select * from openimmoDB.energieausweis where openimmo_obid='".$row["openimmo_obid"]."'";
$result_energiepass= mysql_query($sql_energiepass);
if (!$result_energiepass) {
trigger_error("Konnte das Erzeugen des Energiepasses nicht ausfuehren!\n\r" .mysql_error()."\n\r".$sql_energiepass."\n\r");
}
else
{
$row_energiepass = mysql_fetch_array ( $result_energiepass );
}
$energiepass=$zustand_angaben->addChild('energiepass');
$energiepass->addChild('epart', $row_energiepass["energieausweis"]);
$energiepass->addChild('gueltig_bis', "");
$energiepass->addChild('energieverbrauchkennwert', $row_energiepass["wert"]);
$energiepass->addChild('mitwarmwasser', "");
$energiepass->addChild('endenergiebedarf', $row_energiepass["wert"]);
$energiepass_e3=$zustand_angaben->addChild('user_defined_simplefield', $row_energiepass["effizienzklasse"]);
$energiepass_e3->addAttribute('feldname','epass_wertklasse');
$energiepass_e4=$zustand_angaben->addChild('user_defined_simplefield', $row_energiepass["baujahr"]);
$energiepass_e4->addAttribute('feldname','epass_baujahr');
$energiepass_e5=$zustand_angaben->addChild('user_defined_simplefield', $row_energiepass["strom"]);
$energiepass_e5->addAttribute('feldname','epass_stromwert');
$energiepass_e6=$zustand_angaben->addChild('user_defined_simplefield', $row_energiepass["waerme"]);
$energiepass_e6->addAttribute('feldname','epass_waermewert');
$energiepass_e7=$zustand_angaben->addChild('user_defined_simplefield', $row_energiepass["enegietraeger"]);
$energiepass_e7->addAttribute('feldname','homeinfo_epass_enegietraeger');
// ENDE ENERGIEAUSWEIS
但问题通常适用于所有45个PHP文件中可能需要进行的任何类型的多行代码更改(上次是应用于50 LOC的不同更改,我现在手动执行此操作,因为它很紧急)。