當前位置: 首頁>>代碼示例>>PHP>>正文


PHP IPSText::parseCleanKey方法代碼示例

本文整理匯總了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;
 }
開發者ID:dalandis,項目名稱:Visualization-of-Cell-Phone-Locations,代碼行數:96,代碼來源:publicOutput.php

示例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) {
開發者ID:ConnorChristie,項目名稱:GrabViews,代碼行數:67,代碼來源:publicOutput.php

示例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 = '';
//.........這裏部分代碼省略.........
開發者ID:ConnorChristie,項目名稱:GrabViews,代碼行數:101,代碼來源:ipsRegistry.php

示例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;
                             }
                         }
                     }
                 }
             }
         }
//.........這裏部分代碼省略.........
開發者ID:ConnorChristie,項目名稱:GrabViews,代碼行數:101,代碼來源:links.php

示例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;
 }
開發者ID:dalandis,項目名稱:Visualization-of-Cell-Phone-Locations,代碼行數:28,代碼來源:core.php


注:本文中的IPSText::parseCleanKey方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。