【问题标题】:PHP to change some content of a HTML file [duplicate]PHP更改HTML文件的某些内容[重复]
【发布时间】:2015-05-19 06:38:51
【问题描述】:

我有一个HTML文件,里面有很多href="",src=""属性,我需要用PHP读入整个HTML文件,然后用PHP代码替换href="",@的所有值987654325@ 给我想要的人。我认为步骤是:

  1. 使用file_get_contents() 读取abc.html 文件并将其保存到变量中
  2. 关于href=""src=""的值替换部分,是用字符串替换函数好还是用正则表达式好?
  3. 回显最终变量(更新后的 HTML)。

【问题讨论】:

  • 使用简单的 PHP HTML DOM simplehtmldom.sourceforge.net
  • str_replace 会更快,但取决于您的替换有多复杂。将 href="mypage.php" 替换为 href="/newdir/mypage.php" 很容易,但 href="/one-of-a-number-of-directories/mypage.php" 将用于正则表达式。您可能会发现使用 PHP 插入基本 href 标记也会达到您想要的结果。

标签: php html regex string


【解决方案1】:

我会使用 MVC 模型和渲染器函数。例如: index.php

<!DOCTYPE HTML>
<html>
    <head>
        <title><?=$title; ?></title>
    </head>
    <body>
        <h3><?=$text; ?></h3>
    </body>
</html>

我将拥有包含这些变量的 PHP 数组:

$array = array("title"=>"Mypage", "text"=>"Mytext");

现在我们将在渲染器函数中使用两者

function renderer($path, $array)
{
    extract($array);
    include_once("$path.php");
} 
renderer("index", $array);

【讨论】:

    【解决方案2】:
    define('TEMPLATE', __DIR__ . DIRECTORY_SEPARATOR . 'index.html');
    
    $template = file_get_contents(TEMPLATE);
    
    $patterns = array();
    $patterns[0] = '/href="(.{0,})"/';
    $patterns[1] = '/src="(.{0,})"/';
    
    $replacements = array();
    $replacements[0] = 'href="link"';
    $replacements[1] = 'src="src"';
    
    
    $template = preg_replace($patterns, $replacements, $template);
    
    echo $template;
    

    文件 index.html 当前与 PHP 脚本位于同一目录中。您可以指定文件修改常量的路径。在模式/替换数组中,您可以添加任何其他模式

    【讨论】:

      猜你喜欢
      • 2020-08-06
      • 1970-01-01
      • 2017-10-12
      • 2010-10-30
      • 2019-12-10
      • 1970-01-01
      • 2021-05-05
      • 2023-03-08
      • 2013-07-28
      相关资源
      最近更新 更多