我对这段代码感到有点困惑。它在一个不同的网站上“之前”工作但现在由于某种原因它不适用于我正在研究的这个新工作。我有一个单独的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);
显示BLOG
所以,我可以看到代码正在读取php文件并且可以读取数组,如元和页面索引所示。
但它正在打破变量和页面。由于这是在索引页面而不是博客页面上测试的 - 但它返回了博客。
有什么想法吗?
答案 0 :(得分:3)
有很多方法可以执行此操作(使用$_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
答案 1 :(得分:0)
检查您的修补程序是否正确,检查index.php中print(__FILE__);
print($_SERVER['DOCUMENT_ROOT']);
的输出。
尝试使用__FILE__
和pathinfo构建路径。可能需要realpath来确保路径结构。
最好不要简单地在文件中设置$ meta,而是返回生成的内容数组,如: 阵列( 'title'=&gt; '标题文字', 'kexwords'=&gt; 'kexwords text', 'description'=&gt; '描述文字', // ... ) '关于'=&gt;阵列( 'title'=&gt; '标题文字', 'kexwords'=&gt; 'kexwords text', 'description'=&gt; '描述文字', // ... ) 'SERVICES'=&gt;阵列( 'title'=&gt; '标题文字', 'kexwords'=&gt; 'kexwords text', 'description'=&gt; '描述文字', // ... ) // ... );
和其他文件
<?php
//file index.php
$meta = include( $_SERVER['DOCUMENT_ROOT'] . '/seo.php' );
两种方式都应该很难。