PHP:检查HTML元素是否具有某个类

时间:2013-06-14 23:01:54

标签: php html html5

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

<html class="bears honey alaska">

在页面底部创建一个简单的PHP函数:“如果有类'bear',请在此处包含bears.php。”没有任何余地。

有人可以帮我处理代码吗?

HTML 5中的data-attribute可能更适合,但我不知道PHP是否可以解决它们。

感谢。 鲁纳

4 个答案:

答案 0 :(得分:4)

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

<?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");

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

答案 1 :(得分:1)

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

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

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

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

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

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

答案 2 :(得分: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');
}

尽管如此,我强烈建议您阅读其他评论。你想做的事情听起来并不是一个理想的解决方案。

答案 3 :(得分:0)

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

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

然后,如果给定值在您的主题数组中,您可以稍后在页面中查看:

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

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