Php 我需要在目录中的所有文件中自动替换部分代码

Php 我需要在目录中的所有文件中自动替换部分代码,php,html,Php,Html,我正在尝试将一个大型网站转换为PHP。所有文件的头/页眉部分和页脚部分几乎相似 我正试图将所有这些页眉部分和页脚部分合并到一个单独的文件中 所以我需要更换我所有的 标题部分(跨越1045至1535行的任意位置)带有 及 页脚部分(跨越80到140行的任意位置)带有 从目录中的所有文件 这是我需要做的一个粗略的数字。。请看下面的代码 /*一些脚本*/ 在上面给出的代码中,我需要从上到下替换所有内容 (直到结束标记) 与 另外,我需要替换页脚下的所有内容 与 请帮我用我的字符

我正在尝试将一个大型网站转换为PHP。所有文件的头/页眉部分和页脚部分几乎相似

我正试图将所有这些页眉部分和页脚部分合并到一个单独的文件中

所以我需要更换我所有的

  • 标题部分(跨越1045至1535行的任意位置)带有
  • 
    

  • 页脚部分(跨越80到140行的任意位置)带有
  • 
    
    从目录中的所有文件

    这是我需要做的一个粗略的数字。。请看下面的代码

    
    /*一些脚本*/
    
    在上面给出的代码中,我需要从上到下替换所有内容

    
    
    (直到结束标记) 与

    
    
    另外,我需要替换页脚下的所有内容

    
    
    请帮我用我的字符串替换文件的那一部分


    提前感谢这是一个快速的粗略修复。。。没有测试它,但希望它能工作!
    快抬头!如果您计划在
    中添加
    ,则在
    类的
    结束标记之后添加此

    使用
    preg_-match('/(.*?(.*?)/s',$file,$newfile)更改第一个
    preg_-match

    $file=file\u get\u contents('replace\u head.html');
    preg_匹配('/(.*)(.*)/s',$file,$newfile);
    preg_match('/(.*)(.*)/s',$file,$newfile2);
    如果($newfile==TRUE){
    $file1=str_replace([$newfile[0]],[''],$file);
    如果($newfile2==TRUE){
    $file2=str_replace([$newfile2[0]],[''],$file1);
    //标题(“内容类型:纯/文本”);
    //如果要下载当前文件,请取消对此的注释
    标题('content-type:application/json');
    //如果您想将其视为html,请对此进行注释
    echo(2美元);
    }
    }
    
    这是一个快速粗略的解决方案。。。没有测试它,但希望它能工作!
    快抬头!如果您计划在
    中添加
    ,则在
    类的
    结束标记之后添加此

    使用
    preg_-match('/(.*?(.*?)/s',$file,$newfile)更改第一个
    preg_-match

    $file=file\u get\u contents('replace\u head.html');
    preg_匹配('/(.*)(.*)/s',$file,$newfile);
    preg_match('/(.*)(.*)/s',$file,$newfile2);
    如果($newfile==TRUE){
    $file1=str_replace([$newfile[0]],[''],$file);
    如果($newfile2==TRUE){
    $file2=str_replace([$newfile2[0]],[''],$file1);
    //标题(“内容类型:纯/文本”);
    //如果要下载当前文件,请取消对此的注释
    标题('content-type:application/json');
    //如果您想将其视为html,请对此进行注释
    echo(2美元);
    }
    }
    
    首先,请注意正则表达式通常不应与DOM一起使用。但是,由于我们讨论的是文件内的大规模替换,我认为在这种情况下这是可以接受的(您不想丢失格式,使用DOM大规模删除节点也会很尴尬)

    现在,考虑到您在另一篇关于
    menubar2
    div结构的评论中所说的,这应该可以做到

    编辑:现在在
    menubar2

    // Compute the amount of divs within `menubar2` div
    libxml_use_internal_errors(true);
    $doc = new \DOMDocument();
    $doc->loadHTML($html);
    $menubar2_inner_div_count = (new \DOMXPath($doc))
      ->query('//div[@class="menubar2"]//div')
      ->length;
    
    // Header
    $html = preg_replace(
      '/^.*?<div class="menubar2">' . str_repeat('.*?<\/div>', $menubar2_inner_div_count + 1) . '/s', 
      '<!-- Header -->' . PHP_EOL . '<?php include_once "include/header.php" ?>', 
       $html
    );
    
    // Footer
    $html = preg_replace(
      '/<footer class="site-footer">.*?<\/html>/s', 
      '<?php include_once "include/footer.php" ?>', 
      $html
    );
    
    // (Optional) Remove now useless indentation (supposes your indent is 8 spaces, 
    // otherwise replace accordingly)
    $html = preg_replace('/^ {8}/m', '', $html);
    
    //计算'menubar2'div中div的数量
    libxml\u使用\u内部错误(true);
    $doc=new\DOMDocument();
    $doc->loadHTML($html);
    $menubar2\u内部\u分区\u计数=(新建\DOMXPath($doc))
    ->查询('//div[@class=“menubar2”]//div')
    ->长度;
    //标题
    $html=preg\u replace(
    “/^.*”.str_repeat(“.*”,$menubar2_inner_div_count+1)。“/s”,
    “.PHP_EOL.”,
    $html
    );
    //页脚
    $html=preg\u replace(
    “/.*?/s”,
    '', 
    $html
    );
    //(可选)删除现在无用的缩进(假设缩进为8个空格,
    //否则,请相应更换)
    $html=preg_replace('/^{8}/m',''$html);
    

    演示:

    首先,请注意正则表达式通常不应与DOM一起使用。但是,由于我们讨论的是文件内的大规模替换,我认为在这种情况下这是可以接受的(您不想丢失格式,使用DOM大规模删除节点也会很尴尬)

    现在,考虑到您在另一篇关于
    menubar2
    div结构的评论中所说的,这应该可以做到

    编辑:现在在
    menubar2

    // Compute the amount of divs within `menubar2` div
    libxml_use_internal_errors(true);
    $doc = new \DOMDocument();
    $doc->loadHTML($html);
    $menubar2_inner_div_count = (new \DOMXPath($doc))
      ->query('//div[@class="menubar2"]//div')
      ->length;
    
    // Header
    $html = preg_replace(
      '/^.*?<div class="menubar2">' . str_repeat('.*?<\/div>', $menubar2_inner_div_count + 1) . '/s', 
      '<!-- Header -->' . PHP_EOL . '<?php include_once "include/header.php" ?>', 
       $html
    );
    
    // Footer
    $html = preg_replace(
      '/<footer class="site-footer">.*?<\/html>/s', 
      '<?php include_once "include/footer.php" ?>', 
      $html
    );
    
    // (Optional) Remove now useless indentation (supposes your indent is 8 spaces, 
    // otherwise replace accordingly)
    $html = preg_replace('/^ {8}/m', '', $html);
    
    //计算'menubar2'div中div的数量
    libxml\u使用\u内部错误(true);
    $doc=new\DOMDocument();
    $doc->loadHTML($html);
    $menubar2\u内部\u分区\u计数=(新建\DOMXPath($doc))
    ->查询('//div[@class=“menubar2”]//div')
    ->长度;
    //标题
    $html=preg\u replace(
    “/^.*”.str_repeat(“.*”,$menubar2_inner_div_count+1)。“/s”,
    “.PHP_EOL.”,
    $html
    );
    //页脚
    $html=preg\u replace(
    “/.*?/s”,
    '', 
    $html
    );
    //(可选)删除现在无用的缩进(假设缩进为8个空格,
    //否则,请相应更换)
    $html=preg_replace('/^{8}/m',''$html);
    

    演示:

    所有文件中的页眉/页脚部分是否完全相同?在任何情况下,您都应该能够通过使用具有该功能的IDE/编辑器替换大量正则表达式来实现这一点。不过,你的问题与PHP没有特别的关系,除非你想用PHP脚本来解决,这也是可能的。不,所有文件的页眉和页脚都不完全相同。。这是困扰我的问题之一..是的。。我需要用PHP来做。。我要列出并选择文件夹中的所有文件名,然后解压缩