开放的编程资料库

当前位置:我爱分享网 > PHP教程 > 正文

使用 PHP 识别您的身体

网站的每个部分似乎都需要是动态的。动态的、数据库驱动的页面、动态的 JavaScript、动态的 CSS 等。所有这些动态性都使得难以轻松地设计页面样式或编写脚本。我学会了克服使用 CMS 的僵化的一种方法是为 BODY 元素提供一个基于 URL 的唯一 ID。这样做可以让我向任何页面添加特殊样式。

PHP

function generate_id($uri) {
	/* regular expressions */
	$regex1 = '/[^a-zA-Z0-9]/'; //remove anything but letters and numbers
	$regex2 = '/[\-]+/'; //remove multiple "-"'s in a row
	$regex3 = '/^[-]+/'; //remove starting "-"
	$regex4 = '/[-]+$/'; //remove ending "-"
	/* return... */
	return preg_replace(
				array($regex1,$regex2,$regex3,$regex4),
				array('-','-','',''),
				$_SERVER['REQUEST_URI']
			  );
}

/* do it! */
$body_id = generate_id($_SERVER['REQUEST_URI']);

上面的代码使用 preg_replace 来查找“坏”或重复的字符,并将它们替换为破折号或什么都不替换。我并不自称是正则表达式天才,因此可能有更好的方法来构造 preg_replace 正则表达式参数。让我们看一些示例用法:

//assuming the page URI is:  /some-directory/deeper/my-page
$body_id = generate_id($_SERVER['REQUEST_URI']);
//returns:  some-directory-deeper-my-page
echo '<body id="',$body_id,'">';

上面使用页面 URI 构建主体 ID,将“页面名称”与其目录连接起来。

//assuming the page URI is:  /some-directory/deeper/my-page?category=mootools
$body_id = generate_id($_SERVER['REQUEST_URI']);
//returns:  some-directory-deeper-my-page-category-mootools
echo '<body id="',$body_id,'">';

上面使用了页面URI,包括GET参数。

//assuming the page URI is:  /some-directory/deeper/my-page.php?category=mootools
$body_id = generate_id($_SERVER['REQUEST_URI']);
//returns:  some-directory-deeper-my-page-php-category-mootools
echo '<body id="',$body_id,'">';

上面显示了一个非搜索引擎友好的 URL 是如何被解析的。如果您愿意,可以从 URI 中删除“.php”文件扩展名。

使用 CSS

body#my-dir-my-page	{ /* custom formatting for this page */ }

以上内容向您展示了如何在给定页面的特殊 CSS 方面利用新 ID。

几点思考

  • 我选择使用 ID 属性——您可以轻松地将其改为 CSS 类。由于这个生成的字符串应该是唯一的(至少理论上如此),我更喜欢 ID。
  • 如果您不使用 SEF 链接,我建议删除文件扩展名——如果不仅仅是为了清洁。
  • li>

  • 如果查询字符串参数与该页面相关/唯一,则保留它们。您可能希望将页面设为 ID 并添加一类查询字符串参数:
    //assuming the page URI is:  /some-directory/deeper/my-page?category=mootools
    list($id,$class) = explode('?',$_SERVER['REQUEST_URI']);
    echo '<body id="',$id,'" class="',$class,'">';
    //returns:  <body id="some-directory-deeper-my-page" class="category-mootools">
    

你有什么想法?你会做这样的事吗?

未经允许不得转载:我爱分享网 » 使用 PHP 识别您的身体

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏