php 字符串转数组 提取中文 提取英文 字符串类型
admin
2023-07-01 12:24:13
0

获取字符串类型

/**
 * 判断中英文
 */
public function checkStr($str){
	$output = ''; ///\<[\s\S]*\>/i
	$a = preg_match('/[' . chr(0xa1) . '-' . chr(0xff) . ']/i', $str);
	$b = preg_match('/[0-9]/i', $str);
	$c = preg_match('/[a-zA-Z]/i', $str);
	if($a && $b && $c){
		$output = 1; //'汉字数字英文的混合字符串';
	}elseif($a && $b && !$c){
		$output = 2; //'汉字数字的混合字符串';
	}elseif($a && !$b && $c){
		$output = 3; //'汉字英文的混合字符串';
	}elseif(!$a && $b && $c){
		$output = 4; //'数字英文的混合字符串';
	}elseif($a && !$b && !$c){
		$output = 5; //'纯汉字';
	}elseif(!$a && $b && !$c){
		$output = 6; //'纯数字';
	}elseif(!$a && !$b && $c){
		$output = 7; //'纯英文';
	}
	return $output;
}



 提取中文

/**
 * 
 * 只提取中文名称
 * @param $srchKeyword
 */
public function getCN($srchKeyword){
	$preg_repOne = array("|[0-9a-zA-Z/-]+|", '/\(|\)/', '/\《|\》/', '/\+|\-|\*|\//' , '/\{|\}/', '/\<|\>/', '/\【|\】/', '/\[|\]/', '/\(|\)/'
	);
	$preg_repTwo = array(' ',
	PHP_EOL,'+',
    '-', '\'', '/', '\\', '[', ']', '{', '}', 'è', 'β', '±', '^', '’', '~', '-', '+', '.', '。', '\'', '#', '@', '!', '&', '*', '<', '>', '%', 'α', 'γ', 'ε', '', '', '' , '[', ']', '-', 'δ', '+', '【', '】', '#', ';', '\\r', '\′', '′', ',', '_');
	$str = preg_replace($preg_repOne, array('', ''), $srchKeyword);
	$str = str_replace($preg_repTwo, array('', ''), $str);
	$str = mb_substr($str,0,255,'utf-8');
	return trim($str);
}



提取英文

/**
 * 提取英文
 * @param $srchKeyword
 */
public function getEN($srchKeyword){
	$preg_repOne = array('/[-][a-zA-Z][0-9]/i', '/[0-9]/i', '/[a-zA-Z][0-9][-]/i', '/[^\[0-9]da-zA-Z]/i', '/\(|\)/', '/\《|\》/', '/\+|\-|\*|\//' , '/\{|\}/', '/\<|\>/', '/\【|\】/', '/\[|\]/', '/\(|\)/'
	);
	$preg_repTwo = array(' ',
	PHP_EOL,
    '-', '\'', '/', '\\', '[', ']', '{', '}', 'è', 'β', '±', '^', '’', '~', '-', '+', '.', '。', '\'', '#', '@', '!', '&', '*', '<', '>', '%', 'α', 'γ', 'ε', '', '', '' , '[', ']', '-', 'δ', '+', '【', '】', '#', ';', '\\r', '\′', '′', '(', ')', '(', ')', ',', '_');
	$str = preg_replace($preg_repOne, array('', ''), $srchKeyword);
	$str = str_replace($preg_repTwo, array('', ''), $str);
	$str = mb_substr($str, 0, 255, 'utf-8');
	return strtolower($str);
}



字符串转数组

/**
* 字符串转数组
* @param $key_words 传入的字符串
* @param $type 字符串类型
*/
function get_key_arr($key_words,$type = 'en'){
$ex_ = 1;
$str_len = strlen($key_words);
$return_arr = '';
if($type == 'cn'){
	$ex_ = 3;//汉字占3个长度
	$str_num = ceil($str_len/$ex_);
	for ($i = 1; $i <= $str_num; $i++) {
		$start = ($i-1)*$ex_;
		$return_arr [] = substr($key_words,$start,$ex_);
	}
}else{
	for ($i = 0; $i < $str_len; $i++) {
		$return_arr [] = $key_words[$i];
	}
}
$return_arr = array_unique($return_arr);
return $return_arr;
}



高亮显示

/**
 * 高亮显示函数
 * @param  $message 需要高亮字的符串
 * @param  $str	    需要高亮的部分字符串
 * @param  $color   高亮显示颜色
 */
function bat_highlight($message,$str,$color = '#ff0000'){

$checkstr = $this->checkStr($str);
if($checkstr== 7 || $checkstr == 4){
	$words_info_en = $this->getEN($str);
	$return_arr = $this->get_key_arr($words_info_en);
}elseif($checkstr== 1 || $checkstr == 2 || $checkstr == 3 || $checkstr == 5){
	$words_info_cn = $this->getCN($str);
	$return_arr = $this->get_key_arr($words_info_cn,'cn');
}
foreach ($return_arr as $value) {
	$message = preg_replace("/($value)/i", '@#\1#@',$message);
}
/**
* 把标识替换回来
* @# == 
* #@ == 
*/
$message = str_replace('@#', '', $message);
$message = str_replace('#@', '', $message);
return $message;
}


好了,到此结束,如有问题,给我留言!

相关内容

热门资讯

被从肯尼迪中心“除名”,特朗普... 新华社北京5月31日电 在法官29日裁定将美国总统特朗普的名字从肯尼迪表演艺术中心移除后,特朗普在社...
卡斯特罗家的六指孙子,被曝已成... 在古巴政坛,卡斯特罗家族始终是一个绕不开的名字。如今,随着美国与古巴之间出现新的接触迹象,一位长期隐...
国际原子能机构:扎波罗热核电站... 当地时间5月30日,国际原子能机构表示,该机构在扎波罗热核电站的团队已要求进入现场,以第一手方式检查...
燃气灶热电偶熄火保护工作原理是... 燃气灶热电偶熄火保护工作原理是什么啊?工作原理如下:当燃具的火焰熄灭的时候,会导致热电偶产生电流下降...
新买燃气灶自动熄火是什么原因 燃气灶熄火原因有很多种,建议先检查一下燃气阀门和灶具的电池是否有问题。管道堵塞:一般情况下,燃气灶管...
新燃气灶有塑料味怎么回事 如果不是点火针的问题,那就看看是不是电池没电或松动了。把燃气灶翻过来,底部一个小盒就是放电池的地方,...
天燃气灶为什么会自动熄火 原因可能是分火盖的小孔被堵住了,这也会引起燃气灶打不着火。发现是分火盖的问题,需要做的是:将分火盖取...
燃气灶为什么开着会自动熄火 问题:燃气灶为什么开着会自动熄火回答:原因是燃气不充足,电池也有问题,不过还是要具体情况具体分析一下...
童真璀璨 喜迎“六一” ↑ 5月29日,湖北省宜昌市秭归县实验小学学生在“花开新时代 童心向未来”为主题的“迎六一”活动中朗...
中方代表:日本没资格在国际场合... 据凤凰卫视报道,5月30日,中国人民解放军专家学者代表团团长、国防大学教授孟祥青在香格里拉对话会的平...