本文整理匯總了PHP中IPSText::parseCleanKey方法的典型用法代碼示例。如果您正苦於以下問題:PHP IPSText::parseCleanKey方法的具體用法?PHP IPSText::parseCleanKey怎麽用?PHP IPSText::parseCleanKey使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類IPSText
的用法示例。
在下文中一共展示了IPSText::parseCleanKey方法的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: checkPermalink
/**
* Check to ensure a permalink is correct
* Accepts a second value of TRUE to simply return a boolean (TRUE means permalink is OK, false means it is not)
* By default, it takes action based on your settings
*
* @access public
* @param string Correct SEO title (app_dir)
* @param boolean [TRUE, return a boolean (true for OK, false for not). FALSE {default} simply take action based on settings]
* @return boolean
*/
public function checkPermalink($seoTitle, $return = FALSE)
{
/* Only serve GET requests */
if ($this->request['request_method'] != 'get') {
return FALSE;
}
if (!$this->settings['use_friendly_urls'] or !$seoTitle or !$this->settings['seo_bad_url'] or $this->settings['seo_bad_url'] == 'nothing') {
return FALSE;
}
$_st = $this->seoTemplates['__data__']['start'];
$_end = $this->seoTemplates['__data__']['end'];
$_sep = $this->seoTemplates['__data__']['varSep'];
$_blk = $this->seoTemplates['__data__']['varBlock'];
$_qs = $_SERVER['QUERY_STRING'] ? $_SERVER['QUERY_STRING'] : @getenv('QUERY_STRING');
$_uri = $_SERVER['REQUEST_URI'] ? $_SERVER['REQUEST_URI'] : @getenv('REQUEST_URI');
$_toTest = $_qs ? $_qs : $_uri;
/* Shouldn't need to check this, but feel better for doing it: Friendly URL? */
if (!strstr($_toTest, $_end)) {
return FALSE;
}
/* Try original */
if (!preg_match("#" . $_st . preg_quote($seoTitle, '#') . '(' . $_end . "\$|" . preg_quote($_blk, '#') . ")#", $_toTest)) {
/* Do we need to encode? */
$_toTest = urldecode($_toTest);
}
if (!preg_match("#" . $_st . preg_quote($seoTitle, '#') . '(' . $_end . "\$|" . preg_quote($_blk, '#') . ")#", $_toTest)) {
if ($return === TRUE) {
return FALSE;
}
/* Still here? */
switch ($this->settings['seo_bad_url']) {
default:
case 'meta':
$this->addMetaTag('robots', 'noindex,nofollow');
break;
case 'redirect':
$uri = array();
foreach ($this->seoTemplates as $key => $data) {
if (!$data['in']['regex']) {
continue;
}
if (preg_match($data['in']['regex'], $_toTest, $matches)) {
if (is_array($data['in']['matches'])) {
foreach ($data['in']['matches'] as $_replace) {
$k = IPSText::parseCleanKey($_replace[0]);
if (strstr($_replace[1], '$')) {
$v = IPSText::parseCleanValue($matches[intval(str_replace('$', '', $_replace[1]))]);
} else {
$v = IPSText::parseCleanValue($_replace[1]);
}
$uri[] = $k . '=' . $v;
}
}
if (strstr($_toTest, $_blk)) {
$_parse = substr($_toTest, strrpos($_toTest, $_blk) + strlen($_blk));
$_data = explode($_sep, $_parse);
$_c = 0;
foreach ($_data as $_v) {
if (!$_c) {
$k = IPSText::parseCleanKey($_v);
$v = '';
$_c++;
} else {
$v = IPSText::parseCleanValue($_v);
$_c = 0;
$uri[] = $k . '=' . $v;
}
}
}
break;
}
}
/* Got something? */
if (count($uri)) {
$newurl = $this->registry->getClass('output')->formatUrl($this->registry->getClass('output')->buildUrl(implode('&', $uri), 'public'), $seoTitle, $key);
if ($this->settings['base_url'] . $_toTest != $newurl) {
$this->registry->getClass('output')->silentRedirect($newurl, $seoTitle, TRUE);
}
} else {
return FALSE;
}
break;
}
}
return TRUE;
}
示例2: checkPermalink
//.........這裏部分代碼省略.........
if ($this->settings['url_type'] == 'query_string') {
$_toTest = str_replace(IPS_PUBLIC_SCRIPT . '?/', '', $_toTest);
// This ends up making /statuses/id/2 (for instance) as statuses/id/2 and does not match FURL templates
//$_toTest = ltrim( $_toTest, '/' );
}
#print '#\d+?' . $_st . preg_quote( $seoTitle, '#' ) . '(' . $_end . "$|" . $_end . "\w+?" . $_end . "$|" . preg_quote( $_blk, '#' ) . ")#";exit;
if (is_array($seoTitle) or !preg_match('#\\d+?' . $_st . preg_quote($seoTitle, '#') . '(' . $_end . "\$|" . $_end . '\\w+?' . $_end . '$|/\\?|' . preg_quote($_blk, '#') . ")#", $_toTest)) {
if ($return === TRUE) {
return FALSE;
}
$uri = array();
$storeKey = '';
$storeData = '';
foreach ($this->seoTemplates as $key => $data) {
if (!$data['in']['regex']) {
continue;
}
$data['in']['regex'] = str_replace("\\{__varBlock__\\}", preg_quote($_blk, '#'), $data['in']['regex']);
if (preg_match($data['in']['regex'], $_toTest, $matches)) {
$storeKey = $key;
$storeData = $data;
$pageNumber = null;
/* Handling pages as a special thing? */
if ($data['isPagesMode'] && strstr($_toTest, $this->seoTemplates['__data__']['varPage'])) {
preg_match('#(' . preg_quote($this->seoTemplates['__data__']['varPage'], '#') . '(\\d+?))(?:$|' . preg_quote($this->seoTemplates['__data__']['varBlock'], '#') . ')#', $_toTest, $pageMatches);
if ($pageMatches[1]) {
$pageNumber = intval($pageMatches[2]);
/* We want page-1 to 301 to just / */
$pageNumber = $pageNumber > 1 ? $pageNumber : null;
}
}
if (is_array($data['in']['matches'])) {
foreach ($this->seoTemplates[$key]['in']['matches'] as $_replace) {
$k = IPSText::parseCleanKey($_replace[0]);
if (strstr($_replace[1], '$')) {
$v = IPSText::parseCleanValue($matches[intval(str_replace('$', '', $_replace[1]))]);
} else {
$v = IPSText::parseCleanValue($_replace[1]);
}
$uri[] = $k . '=' . $v;
}
}
if (strstr($_toTest, $_blk)) {
$_parse = substr($_toTest, strrpos($_toTest, $_blk) + strlen($_blk));
$_data = explode($_sep, $_parse);
$_c = 0;
foreach ($_data as $_v) {
list($__k, $__v) = explode($_join, $_v);
$k = IPSText::parseCleanKey($__k);
$v = IPSText::parseCleanValue($__v);
$uri[] = $k . '=' . $v;
}
}
if ($data['newTemplate']) {
$key = $data['newTemplate'];
}
break;
}
}
/* Got something? */
if (count($uri)) {
if ($pageNumber !== null) {
/* add in page */
$uri[] = 'page=' . $pageNumber;
}
foreach ($seoTitle as $_k => $_v) {
示例3: _fUrlInit
/**
* INIT furls
* Performs set up and figures out any incoming links
*
* @return @e void
*/
protected static function _fUrlInit()
{
/**
* Fix request uri
*/
self::_fixRequestUri();
if (ipsRegistry::$settings['use_friendly_urls']) {
/* Grab and store accessing URL */
self::$_uri = preg_replace("/s=(&|\$)/", '', str_replace('/?', '/' . IPS_PUBLIC_SCRIPT . '?', $_SERVER['REQUEST_URI']));
$_urlBits = array();
/* Grab FURL data... */
if (!IN_DEV and is_file(FURL_CACHE_PATH)) {
$templates = array();
include FURL_CACHE_PATH;
/*noLibHook*/
self::$_seoTemplates = $templates;
} else {
/* Attempt to write it */
self::$_seoTemplates = IPSLib::buildFurlTemplates();
try {
IPSLib::cacheFurlTemplates();
} catch (Exception $e) {
}
}
if (is_array(self::$_seoTemplates) and count(self::$_seoTemplates)) {
$uri = $_SERVER['REQUEST_URI'] ? $_SERVER['REQUEST_URI'] : @getenv('REQUEST_URI');
/* Bug 21295 - remove known URL from test URI */
$_t = !empty(ipsRegistry::$settings['board_url']) ? @parse_url(ipsRegistry::$settings['board_url']) : @parse_url(ipsRegistry::$settings['base_url']);
$_toTest = ($_t['path'] and $_t['path'] != '/') ? preg_replace("#^{$_t['path']}#", '', $uri) : str_replace($_t['scheme'] . '://' . $_t['host'], '', $uri);
$_404Check = $_toTest;
//We want to retain any /index.php for this test later in this block of code
$_toTest = str_ireplace(array('//' . IPS_PUBLIC_SCRIPT . '?', '/' . IPS_PUBLIC_SCRIPT . '?', '/' . IPS_PUBLIC_SCRIPT), '', $_toTest);
$_gotMatch = false;
foreach (self::$_seoTemplates as $key => $data) {
if (empty($data['in']['regex'])) {
continue;
}
/* Clean up regex */
$data['in']['regex'] = str_replace('#{__varBlock__}', preg_quote(self::$_seoTemplates['__data__']['varBlock'], '#'), $data['in']['regex']);
if (preg_match($data['in']['regex'], $_toTest, $matches)) {
$_gotMatch = true;
/* Handling pages as a special thing? */
if ($data['isPagesMode']) {
if (strstr($_toTest, self::$_seoTemplates['__data__']['varPage'])) {
preg_match('#(' . preg_quote(self::$_seoTemplates['__data__']['varPage'], '#') . '(\\d+?))(?:$|' . preg_quote(self::$_seoTemplates['__data__']['varBlock'], '#') . ')#', $_toTest, $pageMatches);
if ($pageMatches[1]) {
$k = 'page';
$_GET[$k] = intval($pageMatches[2]);
$_POST[$k] = intval($pageMatches[2]);
$_REQUEST[$k] = intval($pageMatches[2]);
$_urlBits[$k] = intval($pageMatches[2]);
ipsRegistry::$request[$k] = intval($pageMatches[2]);
$_toTest = str_replace($pageMatches[1], '', $_toTest);
}
} else {
/* Redirect all < 3.4 links to the new sexy awesome format if need be */
if (self::$_seoTemplates['__data__']['varBlock'] != '/page__' && $uri && strstr($uri, '/page__')) {
preg_match('#(.*)(page__.*)$#', $uri, $matches);
$url = $matches[1];
$query = $matches[2];
$newQuery = '?';
$data = explode('__', substr($query, 6));
for ($i = 0, $j = count($data); $i < $j; $i++) {
$newQuery .= ($i % 2 == 0 ? '&' : '=') . $data[$i];
}
/* Class output not created here */
header("HTTP/1.1 301 Moved Permanently");
header("Location: " . $_t['scheme'] . '://' . $_t['host'] . $url . $newQuery);
exit;
}
}
}
if (is_array($data['in']['matches'])) {
foreach ($data['in']['matches'] as $_replace) {
$k = IPSText::parseCleanKey($_replace[0]);
if (strpos($_replace[1], '$') !== false) {
$v = IPSText::parseCleanValue($matches[intval(str_replace('$', '', $_replace[1]))]);
} else {
$v = IPSText::parseCleanValue($_replace[1]);
}
$_GET[$k] = $v;
$_POST[$k] = $v;
$_REQUEST[$k] = $v;
$_urlBits[$k] = $v;
ipsRegistry::$request[$k] = $v;
}
}
if (strpos($_toTest, self::$_seoTemplates['__data__']['varBlock']) !== false) {
/* Changed how the input variables are parsed based on feedback in bug report 24907
@link http://community.invisionpower.com/tracker/issue-24907-member-list-pagination-not-work-with-checkbox
Input variables now preserve array depth properly as a result */
$_parse = substr($_toTest, strpos($_toTest, self::$_seoTemplates['__data__']['varBlock']) + strlen(self::$_seoTemplates['__data__']['varBlock']));
$_data = explode(self::$_seoTemplates['__data__']['varSep'], $_parse);
$_query = '';
//.........這裏部分代碼省略.........
示例4: _checkForFurl
/**
* Try and deconstruct the link if it's a FURRY FURL
*
* @access protected
* @param string Incoming URL
* @return array Array of request data or false
*/
protected function _checkForFurl($url)
{
$_urlBits = array();
$_toTest = $url;
$templates = array();
if (is_file(FURL_CACHE_PATH)) {
$templates = array();
require FURL_CACHE_PATH;
/*noLibHook*/
$_seoTemplates = $templates;
} else {
/* Attempt to write it */
$_seoTemplates = IPSLib::buildFurlTemplates();
try {
IPSLib::cacheFurlTemplates();
} catch (Exception $e) {
}
}
if (is_array($_seoTemplates) and count($_seoTemplates)) {
foreach ($_seoTemplates as $key => $data) {
if (empty($data['in']['regex'])) {
continue;
}
if (preg_match($data['in']['regex'], $_toTest, $matches)) {
if (is_array($data['in']['matches'])) {
foreach ($data['in']['matches'] as $_replace) {
$k = IPSText::parseCleanKey($_replace[0]);
if (strpos($_replace[1], '$') !== false) {
$v = IPSText::parseCleanValue($matches[intval(str_replace('$', '', $_replace[1]))]);
} else {
$v = IPSText::parseCleanValue($_replace[1]);
}
$_urlBits[$k] = $v;
}
}
if (strpos($_toTest, $_seoTemplates['__data__']['varBlock']) !== false) {
$_parse = substr($_toTest, strpos($_toTest, $_seoTemplates['__data__']['varBlock']) + strlen($_seoTemplates['__data__']['varBlock']));
$_data = explode($_seoTemplates['__data__']['varSep'], $_parse);
$_c = 0;
foreach ($_data as $_v) {
if (!$_c) {
$k = IPSText::parseCleanKey($_v);
$v = '';
$_c++;
} else {
$v = IPSText::parseCleanValue($_v);
$_c = 0;
$_urlBits[$k] = $v;
}
}
}
break;
}
}
//-----------------------------------------
// If using query string furl, extract any
// secondary query string.
// Ex: http://localhost/index.php?/path/file.html?key=value
// Will pull the key=value properly
//-----------------------------------------
$_qmCount = substr_count($_toTest, '?');
if ($_qmCount > 1) {
$_secondQueryString = substr($_toTest, strrpos($_toTest, '?') + 1);
$_secondParams = explode('&', $_secondQueryString);
if (count($_secondParams)) {
foreach ($_secondParams as $_param) {
list($k, $v) = explode('=', $_param);
$k = IPSText::parseCleanKey($k);
$v = IPSText::parseCleanValue($v);
$_urlBits[$k] = $v;
}
}
}
/* Process URL bits for extra ? in them */
if (is_array($_urlBits) and count($_urlBits)) {
foreach ($_urlBits as $k => $v) {
if (strstr($v, '?')) {
list($rvalue, $more) = explode('?', $v);
if ($rvalue and $more) {
/* Reset key with correct value */
$_v = $rvalue;
$_urlBits[$k] = $_v;
/* Now add in the other value */
if (strstr($more, '=')) {
list($_k, $_v) = explode('=', $more);
if ($_k and $_v) {
$_urlBits[$_k] = $_v;
}
}
}
}
}
}
//.........這裏部分代碼省略.........
示例5: parseIncomingRecursively
/**
* Recursively cleans keys and values and
* inserts them into the input array
*
* @access public
* @param mixed Input data
* @param array Storage array for cleaned data
* @param integer Current iteration
* @return array Cleaned data
*/
public static function parseIncomingRecursively(&$data, $input = array(), $iteration = 0)
{
// Crafty hacker could send something like &foo[][][][][][]....to kill Apache process
// We should never have an input array deeper than 20..
if ($iteration >= 20) {
return $input;
}
foreach ($data as $k => $v) {
if (is_array($v)) {
$input[$k] = self::parseIncomingRecursively($data[$k], array(), ++$iteration);
} else {
$k = IPSText::parseCleanKey($k);
$v = IPSText::parseCleanValue($v, false);
$input[$k] = $v;
}
}
return $input;
}