PHP 数组无法正确从 php 文件中提取数据

标签 php html arrays

我对这段代码有点困惑。它“之前”在另一个网站上工作,但现在由于某种原因它不适用于我正在开发的这个新网站。我有一个单独的 PHP 文件,我将元标题、元描述、元关键字、h1、h2 标签存储为数组。该网站应该将获取的信息分成变量,然后将其放置在代码中的正确位置。代码如下:

网站根文件夹中的SEO.PHP文件

        <?php
       $meta['INDEX']['title']            = "Title";
       $meta['INDEX']['keywords']         = "keywords";
       $meta['INDEX']['description']      = "description";
       $meta['INDEX']['H1']            = "h1";
       $meta['INDEX']['H2']            = "h2";

       $meta['ABOUT']['title']            = "About Company";
       $meta['ABOUT']['keywords']         = "kwd1, kwd2, kwd3";
       $meta['ABOUT']['description']      = "About company description";
       $meta['ABOUT']['H1']            = "h1 title";

       $meta['SERVICES']['title']         = "About Company";
       $meta['SERVICES']['keywords']      = "kwd1, kwd2, kwd3";
       $meta['SERVICES']['description']   = "About company description";
       $meta['SERVICES']['H1']             = "h1 title";

       $meta['BLOG']['title']              = "About Company";
       $meta['BLOG']['keywords']           = "kwd1, kwd2, kwd3";
       $meta['BLOG']['description']       = "About company description";
       $meta['BLOG']['H1']                 = "h1 title";
     ?>

INDEX.PHP 中的代码示例

    <?php 
      include 'seo.php'; 
      $page_index = array_keys($meta);
      foreach($page_index as $page)
     {
       if ( strpos( strtoupper($_SERVER['REQUEST_URI']), $page ) !== false)
     {
       $title        = $meta[$page]['title'];
       $keywords     = $meta[$page]['keywords'];
       $description = $meta[$page]['description'];
       $h1           = $meta[$page]['H1'];
       $h2           = $meta[$page]['H2'];
       break;
      }
      } ?>

      <!DOCTYPE HTML>
      <html>
       <head>
         <meta charset="UTF-8" /> 
         <title><?php echo $title; ?></title>
         <meta name="description" content="<?php echo $description; ?>">
         <meta name="keywords" content="<?php echo $keywords; ?>">

以下是从各种变量中打印出来的内容,用于故障排除。

  print_r ($page_index);
Array ( [0] => INDEX [1] => ABOUT [2] => SERVICES [3] => BLOG )


print_r($meta);
Array ( [INDEX] => Array ( [title] => Plumbers in Birmingham, AL | Birmingham Plumbers 
[keywords] => Plumbers in Birmingham AL, Birmingham Plumbers, Plumbers Birmingham AL, 
Plumber Birmingham AL, Plumbing Birmingham Al, Hoover Plumbing, Plumbers in Hoover Al 
[description] => Plumbers in Birmingham, AL - Servicing Mountain Brook, Vestavia 
Hills, Hoover, Pelham, Alabaster, Helena, Homewood and more locations. [H1] => The 
Best Plumbers in Birmingham, AL [H2] => 24 Hour Emergency Plumbing Service ) [ABOUT] 
=> Array ( [title] => About Company [keywords] => kwd1, kwd2, kwd3 [description] => 
About company description [H1] => h1 title ) [SERVICES] => Array ( [title] => About 
Company [keywords] => kwd1, kwd2, kwd3 [description] => About company description [H1] 
=> h1 title ) [BLOG] => Array ( [title] => About Company [keywords] => kwd1, kwd2, 
kwd3 [description] => About company description [H1] => h1 title ) )

这些根本不打印任何内容...

print_r ($title);
print_r ($keywords);
print_r ($description);
print_r ($h1);
print_r ($h2);

最后......

print_r ($page);

显示博客

因此,我可以看到代码正在读取 php 文件,并且可以读取数组,如元和页面索引所示。

但是它在变量和页面上都崩溃了。由于这是在索引页面而不是博客页面上进行测试的 - 但它返回博客。

有什么想法吗?

最佳答案

有很多方法可以做到这一点(尝试 $_SERVER['SCRIPT_NAME']$_SERVER['PHP_SELF']basename():

if ( strpos( basename(strtoupper($_SERVER['SCRIPT_NAME'])), $page ) !== false)

或者也许:

if ( strpos( basename(strtoupper($_SERVER['PHP_SELF'])), $page ) !== false)

或者提供一个您可以尝试的默认值(也可以调整您在此处使用的 $_SERVER var):

$page_index = array_keys($meta);
$vars = $meta['INDEX'];

foreach($page_index as $page){
    if ( strpos( strtoupper($_SERVER['REQUEST_URI']), $page ) !== false) {
        $vars = $meta[$page];
        break;
    }
}
$title        = $vars['title'];
$keywords     = $vars['keywords'];
$description  = $vars['description'];
$h1           = $vars['H1'];
$h2           = $vars['H2'];

//could possibly use extract($vars); instead

关于PHP 数组无法正确从 php 文件中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22308947/

相关文章:

c - C 中可变大小数组的陷阱

php - 需要在 asort 函数期间更改数组键值

php - 如何在 <?php ?> 中编写 html 代码,我想在 PHP 脚本中编写 html 代码,以便它可以从后端回显

php - Laravel mysql 查询关闭服务器

arrays - 如何将切片转换为数组引用?

c# - 将 Word 文档文本转换为 HTML 的库

javascript - 如何在 javascript 中使用 .html() 将 html 作为文本插入?

php动态访问表单变量

php - 如何编写文件检查代码以获得最佳性能

html - 仅使用 HTML(无 Javascript)的人人网、微博和百度 Like 按钮