ホームページ >php教程 >PHP源码 >字符处理集合MST_String

字符处理集合MST_String

PHP中文网
PHP中文网オリジナル
2016-05-25 17:14:261051ブラウズ

php代码

<?php

class MST_String {

	const
		DET_HIGHLIGHT = &#39;%s&#39;;

	protected static
		$_loadStr = array();

	/**
	 * 获取跟定字符串的字节长度
	 */
	static public function length($str) {
		return mb_strlen($str, PROJECT_ENCODE);
	}
	
	/**
	 * 获取跟定字符串的字符长度
	 */
	static public function width($str) {
		return mb_strwidth($str, PROJECT_ENCODE);
	}
	
	/**
	 * 按字节长度截取指定字符串
	 */
	static public function cut($str, $length, $suffix = &#39;...&#39;) {
		$strLen = mb_strlen($str, PROJECT_ENCODE);
		$suffixLen = mb_strlen($suffix, PROJECT_ENCODE);
		if ($strLen <= $length || $strLen <= $suffixLen)
			return $str;
		return (mb_substr($str, 0, $length - $suffixLen, PROJECT_ENCODE)) . $suffix;
	}
	
	/**
	 * 按字符长度截取指定字符串
	 */
	static public function widthCut($str, $width, $suffix = &#39;...&#39;) {
		$strWidth = mb_strwidth($str, PROJECT_ENCODE);
		$suffixWidth = mb_strwidth($suffix, PROJECT_ENCODE);
		if ($strWidth <= $width || $strWidth <= $suffixWidth)
			return $str;
		$newStr = mb_strimwidth($str, 0, $width, $suffix, PROJECT_ENCODE);
		return $newStr;
	}
	
	/**
	 * 驼峰命名
	 */
	static public function camelize($val, $split = &#39;_&#39;, $firstUpper = true) {
		if ($val == null) return $val;
		if (strpos($val, $split) === false) return ($firstUpper ? ucfirst($val) : $val);
		$val = str_replace(&#39;_&#39;, &#39; &#39;, $val);
		$val = ucwords($val);
		$val = str_replace(&#39; &#39;, null, $val);
		if (!$firstUpper)
			$val = lcfirst($val);
		return $val;
	}
	
	/**
	 * 反驼峰
	 */
	static public function tableize($val, $split = &#39;_&#39;) {
		$val = preg_replace(&#39;/([A-Z]{1})/e&#39;, &#39;\&#39;_\&#39; . strtolower(\&#39;\\1\&#39;)&#39;, $val);
		if ($val{0} == &#39;_&#39;) $val = substr($val, 1);
		return $val;
	}
	
	/**
	 * 日期转日期的unix timestamp
	 */
	static public function date2num($date) {
		$parse = date_parse($date);
		return mktime($parse[&#39;hour&#39;], $parse[&#39;minute&#39;], $parse[&#39;second&#39;], $parse[&#39;month&#39;], $parse[&#39;day&#39;], $parse[&#39;year&#39;]);
	}
	
	/**
	 * 生成字符缓存
	 */
	static public function buildStrCache($type) {
		$name = "String/{$type}";
		$file = MST_Core::getPathOf($name, MST_Core::P_LIB, &#39;.txt&#39;);
		if (is_file($file)) {
			$str = file_get_contents($file);
			$strAry = explode("\r\n", $str);
			$result = array();
			foreach ($strAry as $line) {
				$items = explode(&#39;,&#39;,$line);
				for ($i = 1; $i < count($items);$i++) {
					$result[$items[$i]] = $items[0];
				}
			}
			return file_put_contents(MST_Core::getPathOf($name, MST_Core::P_LIB, &#39;.php&#39;), "<?php\r\nreturn ".var_export($result, 1).";");
		}
		return false;
	}
	
	/**
	 * 读取字符缓存
	 */
	static public function getStrCache($type) {
		if (!isset(self::$_loadStr[$type])) {
			$file = &#39;String/&#39; . $type;
			self::$_loadStr[$type] = MST_Core::import($file, MST_Core::P_LIB, &#39;.php&#39;);
		}
		return self::$_loadStr[$type];
	}
	
	/**
	 * 字符替换
	 */
	static public function charReplace($str, $type) {
		if ($typeWords = self::getStrCache($type)) {
			return str_replace(array_keys($typeWords), array_values($typeWords), $str);
		}
		return $str;
	}
	
	/**
	 * 生成指定字符内容的摘要信息
	 */
	static public function summary($content, $len = 256) {
		$content = nl2br($content);
		$content = strip_tags($content);
		$content = str_replace(&#39; &#39;, &#39; &#39;, $content);
		$content = trim($content);
		$content = preg_replace(&#39;/([\r\n]+|[\s]{2,})/i&#39;, &#39; &#39;, $content);
		$content = MST_String::cut($content, $len);
		return $content;
	}
}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。