functions.parse.php
来自「php 开发的内容管理系统」· PHP 代码 · 共 162 行
PHP
162 行
<?php
/**
* Article management
*
* @copyright The XOOPS project http://www.xoops.org/
* @license http://www.fsf.org/copyleft/gpl.html GNU public license
* @author Taiwen Jiang (phppp or D.J.) <php_pp@hotmail.com>
* @since 1.00
* @version $Id$
* @package module::article
*/
if (!defined('XOOPS_ROOT_PATH')){ exit(); }
include dirname(__FILE__)."/vars.php";
define($GLOBALS["artdirname"]."_FUNCTIONS_PARSE_LOADED", TRUE);
IF(!defined("ART_FUNCTIONS_PARSE")):
define("ART_FUNCTIONS_PARSE", 1);
/**
* Function to parse arguments for a page according to $_SERVER['REQUEST_URI']
*
* @var array $args_numeric array of numeric variable values
* @var array $args array of indexed variables: name and value
* @var array $args_string array of string variable values
*
* @return bool true on args parsed
*/
/* known issues:
* - "/" in a string
* - "&" in a string
*/
function art_parse_args(&$args_numeric, &$args, &$args_string)
{
$args_abb = array(
"a" => "article",
"c" => "category",
"k" => "keyword",
"p" => "page",
"s" => "start",
"t" => "topic",
"u" => "uid"
);
$args = array();
$args_numeric = array();
$args_string = array();
if(preg_match("/[^\?]*\.php[\/|\?]([^\?]*)/i", $_SERVER['REQUEST_URI'], $matches)){
$vars = preg_split("/[\/|&]/", $matches[1]);
$vars = array_map("trim", $vars);
if(count($vars)>0) {
foreach($vars as $var){
if(is_numeric($var)){
$args_numeric[] = $var;
}elseif(false === strpos($var, "=")){
if(is_numeric(substr($var, 1))){
$args[$args_abb[strtolower($var{0})]] = intval(substr($var, 1));
}else{
$args_string[] = urldecode($var);
}
}else{
parse_str($var, $args);
}
}
}
}
return (count($args) + count($args_numeric) + count($args_string) == 0) ? null : true;
}
/**
* Function to parse class prefix
*
* @var string $class_string string to be parsed
* @var mixed $pattern
* @var mixed $replacement
*
* @return bool true on success
*/
function art_parse_class($class_string, $pattern = "", $replacement = "")
{
if(empty($class_string)) return;
$patterns = array("/\[CLASS_PREFIX\]/");
$replacements = array(ucfirst(strtolower($GLOBALS["artdirname"])));
if(!empty($pattern) && !is_array($pattern) && !is_array($replacement)){
$pattern = array($pattern);
$replacement = array($replacement);
}
if(is_array($pattern) && count($pattern)>0){
$ii = 0;
foreach($pattern as $pat){
if(!in_array($pat, $patterns)){
$patterns[] = $pat;
$replacements[] = isset($replacement[$ii])?$replacement[$ii]:"";
}
$ii++;
}
}
$class_string = preg_replace($patterns, $replacements, $class_string);
eval($class_string);
return true;
}
/**
* Function to parse function prefix
*
* @var string $function_string string to be parsed
* @var mixed $pattern
* @var mixed $replacement
*
* @return bool true on success
*/
function art_parse_function($function_string, $pattern = "", $replacement = "")
{
if(empty($function_string)) return;
$patterns = array("/\[DIRNAME\]/", "/\[VAR_PREFIX\]/");
$replacements = array($GLOBALS["artdirname"], $GLOBALS["ART_VAR_PREFIX"]);
if(!empty($pattern) && !is_array($pattern) && !is_array($replacement)){
$pattern = array($pattern);
$replacement = array($replacement);
}
if(is_array($pattern) && count($pattern)>0){
$ii = 0;
foreach($pattern as $pat){
if(!in_array($pat, $patterns)){
$patterns[] = $pat;
$replacements[] = isset($replacement[$ii])?$replacement[$ii]:"";
}
$ii++;
}
}
$function_string = preg_replace($patterns, $replacements, $function_string);
eval($function_string);
return true;
}
/**
* Function to parse links, links are delimited by link break, URL and title of a link are delimited by space
*
* @var string $text raw content
*
* @return array associative array of link url and title
*/
function &art_parseLinks($text)
{
$myts =& MyTextSanitizer::getInstance();
$link_array = preg_split("/(\r\n|\r|\n)( *)/", $text);
$links = array();
if(count($link_array)>0) foreach($link_array as $link){
@list($url, $title) = array_map("trim",preg_split("/ /", $link, 2));
if(empty($url)) continue;
if(empty($title)) $title = $url;
$links[] = array(
"url" => $url,
"title" => $myts->htmlSpecialChars($title)
);
}
return $links;
}
ENDIF;
?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?