【问题标题】:Get page information and not the entire page获取页面信息而不是整个页面
【发布时间】:2014-07-21 02:13:36
【问题描述】:

index.php 中,虽然名称可以是任何名称,但我现在在最顶部有一个数组,仅用于测试目的。

<?php
  $settings = array(
   enabled => true,
   id => "KMS",
   theme=>"kms_standard",
  );
?>

我开始将其用作在我的 CMS 表中使用的信息。基本上我正在扫描页面和其他目录的主目录。然后我将li 回显到显示信息的“表格”中,尽管我需要的信息不仅仅是创建/编辑的日期。

前:

Page Name       |       Identifier        |        Status       |      Theme     |     Created/Edited
 index.php             CMS                        Enabled              Dark          12/12/12 12:00      

要获得创建/编辑的日期,我使用date('l jS \of F Y h:i:s A',filemtime('../'.$page))

有没有办法为文档设置这样的数据然后获取它,如果没有,我将如何在每个循环中使用数组而不包括整个文件。我相信如果我这样做 include($file) 它将解析所有 HTML 和 PHP,但我只需要该页面中的 $settings 变量。我希望我让自己足够清楚。如果不是下面的例子

function is_dir_empty($dir) {
  if (!is_readable($dir)) return NULL; 
      $handle = opendir($dir);
      while (false !== ($entry = readdir($handle))) {
         if ($entry != "." && $entry != "..") {
         return FALSE;
        }
      }
     return TRUE;
 }
$pages = scandir('../',0);
foreach($pages as $page){
    if(is_dir('../'.$page) && !is_dir_empty('../'.$page)){
       //iterate deeper to get these files as well
    }elseif(!is_dir('../'.$page)){
     $file = get_file('../'.$page);//basically get the array of information some how
     echo '<div class="row" id="'.removeExtensions($page).'"><ul>'.
          '<li class="fifths"><div class="checkbox_container">'.
          '<input type="checkbox" id="'.$kpage.'_check" value="'.$page.'" class="checkbox" name="delete_page[]" />'.
          '<label for="'.$kpage.'_check"><span></span></label></div>'.$kpage.'</li>'.
          '<li class="fifths">'.$file['id'].'</li>'.
          '<li class="fifths">'.$file['enabled'].'</li>'.
          '<li class="fifths">'.$file['theme'].'</li>'.
          '<li class="fifths" title="'.date('l jS \of F Y h:i:s A',filemtime('../'.$page)).'">'.date('l jS \of F Y h:i:s A',filemtime('../'.$page)).'</li></ul></div>';
    }
}

更新以供将来参考 效果很好

JSON

{
    "index.php":{
       "enabled":"true",
       "theme":"dark",
       "identifier":"KMS"
    }
}

仪表板

$jsona = file_get_contents("../pages.json");
$jsonb = json_decode($jsona,true);      
$data = $jsonb['pages'];

【问题讨论】:

    标签: php variables ob-start


    【解决方案1】:

    有没有办法为文档设置这样的数据然后获取它,如果没有,我将如何在每个循环中使用数组而不包括整个文件。我相信如果我确实 include($file) 它将解析所有 HTML 和 PHP,但我只需要该页面中的 $settings 变量。

    通常应该使用您不想使用的include 包含代码。由于您的 $settings 变量是 PHP 代码,我建议仍然使用该方法。

    包含文件的任何其他方式仍然涉及读取文件,然后从中解析所需的内容,这反过来可能比使用包含更多的资源。当您包含一个文件时,您将获得包含该文件的所有 PHP 代码。

    但是对于这种情况,最好将该数据存储在数据库或至少一个文本格式文件中,然后根据您的目的解析该文件。如果您只需要从中获取一些静态数据,则无需处理整个文件。您可以将数据存储在 XML 或 JSON 中以便于操作,而不必使用纯字符串。

    至于你在编辑中的代码。

    if(isset($_GET['data'])){
     $settings = array(
       enabled => true,
       id => "KMS",
       layout=>"kms_standard",
      );
      return $settings;
      exit();
    }
    

    return 在 PHP 中对 HTTP 请求没有意义。这不会输出任何内容,并且您的 cURL 不会得到任何响应。您的$settings 数组必须打印在页面上。现在出现了如何打印数组并以可用格式输出的问题。这就是 JSON 或 XML 等常见格式变得更加重要的地方。当您可以简单地使用一些本机方法时,您不想使用字符串操作来读取数组。

    【讨论】:

    • 好的,我来看看为用户设置的页面创建一个动态生成的 JSON 文件。我也在调查cURL
    • cURL 如果您的两个文件都在同一台服务器上,则不需要。当这可以使用文件系统轻松完成时,不需要浪费 1 个 HTTP 请求,但是如果必须处理目标 PHP 代码,那么可以,cURLfile_get_contents 是相关的。
    • 好的 Hanky 我会试试看一下 JSON。只需要在文件被删除时删除整个属性。
    • Hanky 我尝试创建一个 JSON 文件并对其进行解码,但在尝试 var_dump 时返回 NULL
    • 您使用的新格式很好。首先var_dump($jsona);首先看看你是否得到了很好的响应,然后你可以稍后解码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    相关资源
    最近更新 更多