[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 授權許可證