多行搜索并在控制台中替换为特殊字符

时间:2014-05-13 08:38:01

标签: php search replace batch-processing multiline

我需要在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的不同更改,我现在手动执行此操作,因为它很紧急)。

0 个答案:

没有答案