我对这段代码有点困惑。它“之前”在另一个网站上工作,但现在由于某种原因它不适用于我正在开发的这个新网站。我有一个单独的 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/