0

我想在博客条目的末尾提供指向类似主题的链接。我的策略是将主题标记作为类属性引用到 html 或 body 元素:

<html class="bears honey alaska">

并在页面底部制作一个简单的 PHP 函数:“如果有类 'bears',请在此处包含 bears.php。” 没有任何其他。

有人可以帮我写代码吗?

HTML 5 中的数据属性可能更适合于此,但我不知道 PHP 是否可以解决它们。

谢谢。鲁纳

4

4 回答 4

5

我不会检查 PHP 中的类,而是使用 PHP 来定义类,然后将其打印到 HTML 中

<?php
$tags = array('bears', 'honey', 'alaska');
?>
<html class="<?=implode(' ', $tags)?>">

最后你可以

if(in_array('bears', $tags)) include("bears.php");

或者如果你想为每个标签包含一个同名的文件:

foreach($tags as $tag) include($tag.".php");

后者将要求您确保每个文件都有一个文件。或者,从长远来看,更复杂的解决方案(例如类)可能会更有用。

于 2013-06-14T23:14:19.977 回答
1

在编写页面之前,您可以创建要包含在 PHP 中的类的数组:

$classes = array('bears', 'honey', 'alaska');

一旦你真正需要在 html 标记中打印类,你可以这样做:

然后稍后在代码中,您可以执行以下操作:

if (in_array("bears", $classes)
{
    // your code here
}

这将使您以后可以轻松添加更多类,您需要做的就是在数组中添加另一个类。

于 2013-06-14T23:12:45.140 回答
0

如果(并且您需要澄清是否是这种情况)您仅使用PHP,则代码全部在服务器端执行。无需添加类,并且由于尚未创建 DOM,因此您无法检测到它们。只需将您的主题存储在一个变量中,例如。数组:

$myTopics = ["bears","honey","alaska"];

然后,您可以稍后在页面中检查给定值是否在您的主题数组中:

if( in_array( "bears", $myTopics ) {
  doStuff();
}

如果您使用单独的文件来构建页面,您可能需要声明和检索 $myTopics 作为全局变量,以便以后使用它。

于 2013-06-14T23:18:17.750 回答
0

您可以使用正则表达式轻松完成,如下所示:

$html_string = '<html class="bears honey alaska">';
$class = 'bears';
$has_bears = preg_match('/<html class="[^"]*'.$class.'[^"]*">/', $html_string);
if ($has_bears) {
    include('bears.php');
}

也就是说,我强烈敦促您阅读对您的问题的其他评论。你想做的事情听起来并不是一个理想的解决方案。

于 2013-06-14T23:11:04.523 回答