Xunsearch PHP-SDK v1.4.9 API 参考文档

# XSUtil

包 | XS.util
继承关系 | class XSUtil
版本 | 1.0.0
源代码 | sdk/php/util/XSUtil.class.php

XSUtil 工具程序通用代码

## Public 方法

隐去继承来的方法

名称 | 描述 | 定义于
--- | --- | ---
convertIn() | 把用户输入的字符串转换为 UTF-8 编码 | XSUtil
convertOut() | 把 UTF-8 字符串转换为用户编码 | XSUtil
copyDir() | 拷贝一个目录及其子目录文件 | XSUtil
fixWidth() | 修正字符串至固定宽度 | XSUtil
flush() | 刷新标准输出缓冲区 | XSUtil
getOpt() | 取得命令行参数 | XSUtil
parseOpt() | 解析命令行参数 | XSUtil
setCharset() | 设置输出、输入编码 | XSUtil
toProjectIni() | 将项目参数转换为有效的 ini 文件 | XSUtil

## 方法明细

convertIn() 方法

public static string convertIn(string $buf)
$buf | string | 要转换字符串
{return} | string | 转换后的字符串

源码: sdk/php/util/XSUtil.class.php#L95 (显示)
`public static function convertIn($buf)
{
if (self::$charset !== null) {
return XS::convert($buf, 'UTF-8', self::$charset);
}
return $buf;
}`

把用户输入的字符串转换为 UTF-8 编码

convertOut() 方法

public static string convertOut(string $buf)
$buf | string | 要转换字符串
{return} | string | 转换后的字符串

源码: sdk/php/util/XSUtil.class.php#L82 (显示)
`public static function convertOut($buf)
{
if (self::$charset !== null) {
return XS::convert($buf, self::$charset, 'UTF-8');
}
return $buf;
}`

把 UTF-8 字符串转换为用户编码

copyDir() 方法

public static void copyDir($src, $dst)
$src |  |
$dst |  |

源码: sdk/php/util/XSUtil.class.php#L194 (显示)
`public static function copyDir($src, $dst)
{
if (!($dir = @dir($src)) || (!is_dir($dst) && !@mkdir($dst, 0755, true))) {
return false;
}
while (($entry = $dir->read()) !== false) {
if ($entry === '.' || $entry === '..') {
continue;
}
$psrc = $src . DIRECTORY_SEPARATOR . $entry;
$pdst = $dst . DIRECTORY_SEPARATOR . $entry;
if (is_dir($pdst)) {
self::copyDir($psrc, $pdst);
} else {
@copy($psrc, $pdst);
}
}
$dir->close();
return true;
}`

拷贝一个目录及其子目录文件

fixWidth() 方法

public static string fixWidth(string $text, int $size, string $pad=' ')
$text | string | 要修正的字符串
$size | int | 修正的目标宽度
$pad | string | 用于填充补足的字符
{return} | string |

源码: sdk/php/util/XSUtil.class.php#L50 (显示)
`public static function fixWidth($text, $size, $pad = ' ')
{
for ($i = $j = 0; $i < strlen($text) && $j < $size; $i++, $j++) {
if ((ord($text[$i]) & 0xe0) === 0xe0) {
if (($size - $j) == 1) {
break;
}
$j++;
$i += 2;
}
}
return substr($text, 0, $i) . str_repeat($pad, $size - $j);
}`

修正字符串至固定宽度 其中一个全角符号、汉字的宽度为半角字符的 2 倍。

flush() 方法

public static void flush()

源码: sdk/php/util/XSUtil.class.php#L183 (显示)
`public static function flush()
{
flush();
if (ob_get_level() > 0) {
ob_flush();
}
}`

刷新标准输出缓冲区

getOpt() 方法

public static string getOpt(string $short, string $long=NULL, bool $extra=false)
$short | string | 短参数名
$long | string | 长参数名
$extra | bool | 是否补用默认顺序的参数
{return} | string | 返回可用的参数值，若不存在则返回 null

源码: sdk/php/util/XSUtil.class.php#L161 (显示)
`public static function getOpt($short, $long = null, $extra = false)
{
if (self::$options === null) {
self::parseOpt();
}
$value = null;
$options = self::$options;
if ($long !== null && isset($options[$long])) {
$value = $options[$long];
} elseif ($short !== null && isset($options[$short])) {
$value = $options[$short];
} elseif ($extra === true && isset($options['-'][self::$optind])) {
$value = $options['-'][self::$optind];
self::$optind++;
}
return $value;
}`

取得命令行参数 要求事先调用 parseOpt, 否则会自动以默认参数调用它。

#### 参见

- parseOpt

parseOpt() 方法

public static array parseOpt(array $valued=array ( ))
$valued | array | 需要附加值的参数列表
{return} | array | 解析完的参数数组，未指定 - 开头的选项统一放入 '-' 的子数组

源码: sdk/php/util/XSUtil.class.php#L108 (显示)
`public static function parseOpt($valued = array())
{
$result = array('-' => array());
$params = isset($_SERVER['argv']) ? $_SERVER['argv'] : array();
for ($i = 0; $i < count($params); $i++) {
if ($params[$i] === '--') {
for ($i = $i + 1; $i < count($params); $i++) {
$result['-'][] = $params[$i];
}
break;
} elseif ($params[$i][0] === '-') {
$value = true;
$pname = substr($params[$i], 1);
if ($pname[0] === '-') {
$pname = substr($pname, 1);
if (($pos = strpos($pname, '=')) !== false) {
$value = substr($pname, $pos + 1);
$pname = substr($pname, 0, $pos);
}
} elseif (strlen($pname) > 1) {
for ($j = 1; $j < strlen($params[$i]); $j++) {
$pname = substr($params[$i], $j, 1);
if (in_array($pname, $valued)) {
$value = substr($params[$i], $j + 1);
break;
} elseif (($j + 1) != strlen($params[$i])) {
$result[$pname] = true;
}
}
}
if ($value === true && in_array($pname, $valued) && isset($params[$i + 1])) {
$value = $params[$i + 1];
$i++;
}
$result[$pname] = $value;
} else {
$result['-'][] = $params[$i];
}
}
self::$options = $result;
self::$optind = 1;
return $result;
}`

解析命令行参数

setCharset() 方法

public static void setCharset(string $charset)
$charset | string | 期望得到的字符集

源码: sdk/php/util/XSUtil.class.php#L69 (显示)
`public static function setCharset($charset)
{
if ($charset !== null && strcasecmp($charset, 'utf8') && strcasecmp($charset, 'utf-8')) {
self::$charset = $charset;
ob_start(array(__CLASS__, 'convertOut'));
}
}`

设置输出、输入编码 默认输出的中文编码均为 UTF-8

toProjectIni() 方法

public static string toProjectIni(string $project)
$project | string | 用户输入的项目参数
{return} | string | 有效的 ini 配置文件路径

源码: sdk/php/util/XSUtil.class.php#L29 (显示)
`public static function toProjectIni($project)
{
if (!is_file($project)) {
$appRoot = getenv('XS_APP_ROOT');
if ($appRoot === false) {
$appRoot = defined('XS_APP_ROOT') ? XS_APP_ROOT : dirname(__FILE__) . '/../app';
}
return $appRoot . '/' . $project . '.ini';
} else {
return $project;
}
}`

将项目参数转换为有效的 ini 文件

Copyright © 2008-2011 by 杭州云圣网络科技有限公司
All Rights Reserved.