[Xunsearch PHP-SDK](http://www.xunsearch.com) v1.4.8 API 参考文档
# XSUtil
[All Packages](#)| [方法(函数)](#)
| 包 | [XS.util](#) |
|-----|-----|
| 继承关系 | class XSUtil |
| 版本 | 1.0.0 |
| 源代码 | [sdk/php/util/XSUtil.class.php](https://github.com/hightman/xunsearch/blob/master/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 |
### 方法明细
convertIn()方法
<table class="summaryTable"><tr><td colspan="3"><div class="signature2">public static string <b>convertIn</b>(string $buf)</div></td></tr><tr><td class="paramNameCol">$buf</td> <td class="paramTypeCol">string</td> <td class="paramDescCol">要转换字符串</td></tr><tr><td class="paramNameCol">{return}</td> <td class="paramTypeCol">string</td> <td class="paramDescCol">转换后的字符串</td></tr></table>
**源码:**[sdk/php/util/XSUtil.class.php#L77](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSUtil.class.php#L77) (**[显示](#)**)
`public static function convertIn($buf)
{
if (self::$charset !== null) {
return XS::convert($buf, 'UTF-8', self::$charset);
}
return $buf;
}`
把用户输入的字符串转换为 UTF-8 编码
convertOut()方法
<table class="summaryTable"><tr><td colspan="3"><div class="signature2">public static string <b>convertOut</b>(string $buf)</div></td></tr><tr><td class="paramNameCol">$buf</td> <td class="paramTypeCol">string</td> <td class="paramDescCol">要转换字符串</td></tr><tr><td class="paramNameCol">{return}</td> <td class="paramTypeCol">string</td> <td class="paramDescCol">转换后的字符串</td></tr></table>
**源码:**[sdk/php/util/XSUtil.class.php#L64](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSUtil.class.php#L64) (**[显示](#)**)
`public static function convertOut($buf)
{
if (self::$charset !== null) {
return XS::convert($buf, self::$charset, 'UTF-8');
}
return $buf;
}`
把 UTF-8 字符串转换为用户编码
copyDir()方法
<table class="summaryTable"><tr><td colspan="3"><div class="signature2">public static void <b>copyDir</b>($src, $dst)</div></td></tr><tr><td class="paramNameCol">$src</td> <td class="paramTypeCol"></td> <td class="paramDescCol"></td></tr><tr><td class="paramNameCol">$dst</td> <td class="paramTypeCol"></td> <td class="paramDescCol"></td></tr></table>
**源码:**[sdk/php/util/XSUtil.class.php#L176](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSUtil.class.php#L176) (**[显示](#)**)
`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()方法
<table class="summaryTable"><tr><td colspan="3"><div class="signature2">public static type <b>fixWidth</b>(string $text, int $size, string $pad=' ')</div></td></tr><tr><td class="paramNameCol">$text</td> <td class="paramTypeCol">string</td> <td class="paramDescCol">要修正的字符串</td></tr><tr><td class="paramNameCol">$size</td> <td class="paramTypeCol">int</td> <td class="paramDescCol">修正的目标宽度</td></tr><tr><td class="paramNameCol">$pad</td> <td class="paramTypeCol">string</td> <td class="paramDescCol">用于填充补足的字符</td></tr><tr><td class="paramNameCol">{return}</td> <td class="paramTypeCol">type</td> <td class="paramDescCol"></td></tr></table>
**源码:**[sdk/php/util/XSUtil.class.php#L32](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSUtil.class.php#L32) (**[显示](#)**)
`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()方法
<table class="summaryTable"><tr><td colspan="3"><div class="signature2">public static void <b>flush</b>()</div></td></tr></table>
**源码:**[sdk/php/util/XSUtil.class.php#L165](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSUtil.class.php#L165) (**[显示](#)**)
`public static function flush()
{
flush();
if (ob_get_level() > 0) {
ob_flush();
}
}`
刷新标准输出缓冲区
getOpt()方法
<table class="summaryTable"><tr><td colspan="3"><div class="signature2">public static string <b>getOpt</b>(string $short, string $long=NULL, bool $extra=false)</div></td></tr><tr><td class="paramNameCol">$short</td> <td class="paramTypeCol">string</td> <td class="paramDescCol">短参数名</td></tr><tr><td class="paramNameCol">$long</td> <td class="paramTypeCol">string</td> <td class="paramDescCol">长参数名</td></tr><tr><td class="paramNameCol">$extra</td> <td class="paramTypeCol">bool</td> <td class="paramDescCol">是否补用默认顺序的参数</td></tr><tr><td class="paramNameCol">{return}</td> <td class="paramTypeCol">string</td> <td class="paramDescCol">返回可用的参数值,若不存在则返回 null</td></tr></table>
**源码:**[sdk/php/util/XSUtil.class.php#L143](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSUtil.class.php#L143) (**[显示](#)**)
`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()方法
<table class="summaryTable"><tr><td colspan="3"><div class="signature2">public static array <b>parseOpt</b>(array $valued=array ())</div></td></tr><tr><td class="paramNameCol">$valued</td> <td class="paramTypeCol">array</td> <td class="paramDescCol">需要附加值的参数列表</td></tr><tr><td class="paramNameCol">{return}</td> <td class="paramTypeCol">array</td> <td class="paramDescCol">解析完的参数数组,未指定 - 开头的选项统一放入 '-' 的子数组</td></tr></table>
**源码:**[sdk/php/util/XSUtil.class.php#L90](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSUtil.class.php#L90) (**[显示](#)**)
`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()方法
<table class="summaryTable"><tr><td colspan="3"><div class="signature2">public static void <b>setCharset</b>(string $charset)</div></td></tr><tr><td class="paramNameCol">$charset</td> <td class="paramTypeCol">string</td> <td class="paramDescCol">期望得到的字符集</td></tr></table>
**源码:**[sdk/php/util/XSUtil.class.php#L51](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSUtil.class.php#L51) (**[显示](#)**)
`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
Copyright © 2008-2011 by [杭州云圣网络科技有限公司](http://www.xunsearch.com)
All Rights Reserved.
- 权威指南
- 新手上路
- 最新主要变动
- 概述
- 关于 Xunsearch PHP-SDK
- 安装、升级
- 体验 demo 项目
- 开发规范
- 开发流程
- 了解基础对象
- 基础对象概述
- XS 项目
- XSException 异常
- XSDocument 文档
- XSIndex 索引管理
- XSSearch 搜索
- XSTokenizer 分词接口
- 编写项目配置文件
- 项目配置详解
- 自定义分词器
- 编写第一个配置文件
- 管理索引
- 索引概述
- 添加文档
- 更新、修改文档
- 删除文档
- 清空索引
- 平滑重建索引
- 使用索引缓冲区
- 自定义SCWS词库
- 使用搜索
- 搜索概述
- 构建搜索语句
- 获取搜索匹配结果
- 获取搜索匹配数量
- 获取热门搜索词
- 获取相关搜索词
- 搜索建议和纠错
- 按字段值分面搜索
- 使用辅助工具
- RequiredCheck 运行检测
- Indexer 索引管理器
- Quest 搜索测试工具
- SearchSkel 生成搜索代码
- IniWizzard 配置文件向导
- Logger 搜索日志管理
- 专题
- 同义词搜索功能
- 在SDK中使用SCWS分词
- API 指南
- XS
- XS
- XSCommand
- XSComponent
- XSDocument
- XSErrorException
- XSException
- XSFieldMeta
- XSFieldScheme
- XSIndex
- XSSearch
- XSServer
- XS.tokenizer
- XSTokenizer
- XSTokenizerFull
- XSTokenizerNone
- XSTokenizerScws
- XSTokenizerSplit
- XSTokenizerXlen
- XSTokenizerXstep
- XS.util
- XSCsvDataSource
- XSDataFilter
- XSDatabaseDataSource
- XSDebugFilter
- XSJsonDataSource
- XSUtil
- XS.util.db
- XSDatabase
- XSDatabaseMySQL
- XSDatabaseMySQLI
- XSDatabasePDO
- XSDatabasePDO_MySQL
- XSDatabasePDO_PgSQL
- XSDatabasePDO_SQLite
- XSDatabasePgSQL
- XSDatabaseSQLite
- XSDatabaseSQLite3
- XS.utilf
- XSDataSource
- 其它文档
- 关于 xunsearch
- 特色和优势
- Xunsearch 架构简图
- 下载 Xunsearch
- 商业服务与支持
- XunSearch 授权许可证