⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sef.php

📁 Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发
💻 PHP
字号:
<?php/*** @version		$Id: sef.php 11658 2009-03-08 20:09:39Z willebil $* @package		Joomla* @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.* @license		GNU/GPL, see LICENSE.php* Joomla! is free software. This version may have been modified pursuant* to the GNU General Public License, and as distributed it includes or* is derivative of works licensed under the GNU General Public License or* other free or open source software licenses.* See COPYRIGHT.php for copyright notices and details.*/// no direct accessdefined( '_JEXEC' ) or die( 'Restricted access' );jimport( 'joomla.plugin.plugin');/*** Joomla! SEF Plugin** @package 		Joomla* @subpackage	System*/class plgSystemSef extends JPlugin{	/**	 * Constructor	 *	 * For php4 compatability we must not use the __constructor as a constructor for plugins	 * because func_get_args ( void ) returns a copy of all passed arguments NOT references.	 * This causes problems with cross-referencing necessary for the observer design pattern.	 *	 * @param	object		$subject The object to observe	  * @param 	array  		$config  An array that holds the plugin configuration	 * @since	1.0	 */	function plgSystemSef(&$subject, $config)  {		parent::__construct($subject, $config);	}	/**     * Converting the site URL to fit to the HTTP request     */	function onAfterRender()	{		$app =& JFactory::getApplication();		if($app->getName() != 'site') {			return true;		}		//Replace src links      	$base   = JURI::base(true).'/';		$buffer = JResponse::getBody();       	$regex  = '#href="index.php\?([^"]*)#m';      	$buffer = preg_replace_callback( $regex, array('plgSystemSEF', 'route'), $buffer );       	$protocols = '[a-zA-Z0-9]+:'; //To check for all unknown protocals (a protocol must contain at least one alpahnumeric fillowed by :      	$regex     = '#(src|href)="(?!/|'.$protocols.'|\#|\')([^"]*)"#m';        $buffer    = preg_replace($regex, "$1=\"$base\$2\"", $buffer);		$regex     = '#(onclick="window.open\(\')(?!/|'.$protocols.'|\#)([^/]+[^\']*?\')#m';		$buffer    = preg_replace($regex, '$1'.$base.'$2', $buffer);				// ONMOUSEOVER / ONMOUSEOUT		$regex 		= '#(onmouseover|onmouseout)="this.src=([\']+)(?!/|'.$protocols.'|\#|\')([^"]+)"#m';		$buffer 	= preg_replace($regex, '$1="this.src=$2'. $base .'$3$4"', $buffer);				// Background image		$regex 		= '#style\s*=\s*[\'\"](.*):\s*url\s*\([\'\"]?(?!/|'.$protocols.'|\#)([^\)\'\"]+)[\'\"]?\)#m';		$buffer 	= preg_replace($regex, 'style="$1: url(\''. $base .'$2$3\')', $buffer);				// OBJECT <param name="xx", value="yy"> -- fix it only inside the <param> tag		$regex 		= '#(<param\s+)name\s*=\s*"(movie|src|url)"[^>]\s*value\s*=\s*"(?!/|'.$protocols.'|\#|\')([^"]*)"#m';		$buffer 	= preg_replace($regex, '$1name="$2" value="' . $base . '$3"', $buffer);				// OBJECT <param value="xx", name="yy"> -- fix it only inside the <param> tag		$regex 		= '#(<param\s+[^>]*)value\s*=\s*"(?!/|'.$protocols.'|\#|\')([^"]*)"\s*name\s*=\s*"(movie|src|url)"#m';		$buffer 	= preg_replace($regex, '<param value="'. $base .'$2" name="$3"', $buffer);		// OBJECT data="xx" attribute -- fix it only in the object tag		$regex = 	'#(<object\s+[^>]*)data\s*=\s*"(?!/|'.$protocols.'|\#|\')([^"]*)"#m';		$buffer 	= preg_replace($regex, '$1data="' . $base . '$2"$3', $buffer);				JResponse::setBody($buffer);		return true;	}	/**     * Replaces the matched tags     *     * @param array An array of matches (see preg_match_all)     * @return string     */   	 function route( &$matches )     {		$original       = $matches[0];       	$url            = $matches[1];		$url = str_replace('&amp;','&',$url);       	$route          = JRoute::_('index.php?'.$url);      	return 'href="'.$route;      }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -