PHP:检查HTML元素是否有特定的类

PHP:检查HTML元素是否有特定的类,php,html,Php,Html,我想在一篇博客文章的末尾提供类似主题的链接。我的策略是将topic标记作为class属性引用到html或body元素中: <html class="bears honey alaska"> 并在页面底部创建一个简单的PHP函数:“如果有类'bears',请在此处包含bears.PHP。”而不包含任何ELSE 有人能帮我查一下密码吗 HTML5中的数据属性可能更适合于此,但我不知道PHP是否可以解决这些问题 谢谢。 Runa您可以使用正则表达式轻松地执行此操作,如下所示: $ht

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

<html class="bears honey alaska">

并在页面底部创建一个简单的PHP函数:“如果有类'bears',请在此处包含bears.PHP。”而不包含任何ELSE

有人能帮我查一下密码吗

HTML5中的数据属性可能更适合于此,但我不知道PHP是否可以解决这些问题

谢谢。
Runa

您可以使用正则表达式轻松地执行此操作,如下所示:

$html_string = '<html class="bears honey alaska">';
$class = 'bears';
$has_bears = preg_match('/<html class="[^"]*'.$class.'[^"]*">/', $html_string);
if ($has_bears) {
    include('bears.php');
}
$html\u string='';
$class='熊';
$has_bears=preg_match('/',$html_string);
如果($has_熊){
包括('bears.php');
}

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

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

$html_string = '<html class="bears honey alaska">';
$class = 'bears';
$has_bears = preg_match('/<html class="[^"]*'.$class.'[^"]*">/', $html_string);
if ($has_bears) {
    include('bears.php');
}
$html\u string='';
$class='熊';
$has_bears=preg_match('/',$html_string);
如果($has_熊){
包括('bears.php');
}

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

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

$classes = array('bears', 'honey', 'alaska');
一旦您确实需要在html标记中打印类,您可以执行以下操作:

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

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

这将便于您以后添加更多类,您只需将另一个类添加到数组中即可。

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

$classes = array('bears', 'honey', 'alaska');
一旦您确实需要在html标记中打印类,您可以执行以下操作:

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

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

这将便于您以后添加更多类,您只需向数组中添加另一个类。

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

<?php
$tags = array('bears', 'honey', 'alaska');
?>
<html class="<?=implode(' ', $tags)?>">
或者,如果要为每个标记包含具有相同名称的文件:

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

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

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

<?php
$tags = array('bears', 'honey', 'alaska');
?>
<html class="<?=implode(' ', $tags)?>">
或者,如果要为每个标记包含具有相同名称的文件:

foreach($tags as $tag) include($tag.".php");
后者将要求您确保每个文件都有一个文件。或者,从长远来看,更复杂的解决方案(如类)可能更有用。

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

$myTopics = ["bears","honey","alaska"];
然后,您可以稍后在页面中检查给定值是否在您的主题数组中:

if( in_array( "bears", $myTopics ) {
  doStuff();
}
如果您使用单独的文件来构建页面,您可能需要声明并检索$myTopics作为全局变量,以便以后使用。

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

$myTopics = ["bears","honey","alaska"];
然后,您可以稍后在页面中检查给定值是否在您的主题数组中:

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

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

您是如何为html提供这些类的?静态地?如果是这样,您将需要使用类似jqueryajax的东西来调用php并获取数据。PHP是服务器端,在输出之前进行处理,因此您不能期望它对已经写入DOM的内容做出反应。当您尝试从PHP端执行此操作时,
class
data-
属性之间没有太大区别,两者都同样效率低下。这需要读取OB并使用DOM解析器/正则表达式。使用变量会更好,一个全局数组可以很容易地处理它。@KaiQing Ajax是独立的,与jQuery无关。@sebas--就是这样。让生活更轻松。我知道区别。但是,如果他在谷歌上搜索“jquery ajax”,他解决问题的可能性要比只搜索ajax大得多。@KaiQing我理解教学意图,但我不得不反对。系统地使用框架来实现简单javascript任务的趋势与我的教育和价值观背道而驰。(在ajax的例子中,我认为jquery实际上使它复杂化了)我的不赞成并不意味着我不尊重你的意见。你是如何给你的html类这些类的?静态地?如果是这样,您将需要使用类似jqueryajax的东西来调用php并获取数据。PHP是服务器端,在输出之前进行处理,因此您不能期望它对已经写入DOM的内容做出反应。当您尝试从PHP端执行此操作时,
class
data-
属性之间没有太大区别,两者都同样效率低下。这需要读取OB并使用DOM解析器/正则表达式。使用变量会更好,一个全局数组可以很容易地处理它。@KaiQing Ajax是独立的,与jQuery无关。@sebas--就是这样。让生活更轻松。我知道区别。但是,如果他在谷歌上搜索“jquery ajax”,他解决问题的可能性要比只搜索ajax大得多。@KaiQing我理解教学意图,但我不得不反对。系统地使用框架来实现简单javascript任务的趋势与我的教育和价值观背道而驰。(一)