我正在尝试为网站页面上的某些元标记定义值,但是,我不一定要在每个页面上都定义它们。

<?php if ($_SERVER['SCRIPT_NAME'] != '/index.html'): ?>
<meta name="description" content="<?php echo $page_info; ?>"/> }
<?php endif; ?>

如您所见,我已将其设置为在除 index.html 之外的每个页面上进行解析,但是,我还想创建以下条件:

仅在定义了 $page_info 时才会解析,否则将不会解析 php if 中的任何内容。

最佳答案

您是否正在寻找 isset() 函数?

<?php if ( isset( $page_info ) && $php_info ): ?>
<meta name="description" content="<?php echo $page_info; ?>"/> }
<?php endif; ?>

Check out the docs for some more info on isset() .



我在这里使用的条件表达式检查是否存在名为 $page_info 的变量 ,它不是“假”值。假值是任何当转换为 boolean 时可以被视为假值的东西,例如(取自 docs ):
  • bool 值 FALSE 本身
  • 整数 0(零)
  • 浮点数 0.0(零)
  • 空字符串,以及字符串“0”
  • 一个元素为零的数组
  • 一个具有零成员变量的对象(仅限 PHP 4)
  • 特殊类型 NULL(包括未设置的变量)
  • 从空标签创建的 SimpleXML 对象
  • 其他所有值都被认为是 TRUE(包括任何资源)。


  • 我可以提出的另一个建议是不要明确测试要排除的页面。而是构建一个包含所有要排除的页面的数组,然后使用 in_array() 调用来检测它是否在列表中:
    $exclude_url = array(
      '/index.html',
      '/about.html'
      '/faq.html'
    );
    
    if ( !in_array( $_SERVER[ 'SCRIPT_NAME' ], $exclude_url ) ){
      // page should NOT be excluded!
    }
    

    关于仅在定义时才在页面上解析 PHP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17264490/

    10-12 12:22
    查看更多