php中文字符串转英文,php 字符串转数组 提取中文 提取英文 字符串类型

获取字符串类型/**

* 判断中英文

*/

public function checkStr($str){

$output = ‘‘; ///\/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,‘+‘,

‘-‘, ‘\‘‘, ‘/‘, ‘\\‘, ‘[‘, ‘]‘, ‘{‘, ‘}‘, ‘è‘, ‘β‘, ‘±‘, ‘^‘, ‘’‘, ‘~‘, ‘-‘, ‘+‘, ‘.‘, ‘。‘, ‘\‘‘, ‘#‘, [email protected], ‘!‘, ‘&‘, ‘*‘, ‘‘, ‘%‘, ‘α‘, ‘γ‘, ‘ε‘, ‘‘, ‘‘, ‘‘ , ‘[‘, ‘]‘, ‘-‘, ‘δ‘, ‘+‘, ‘【‘, ‘】‘, ‘#‘, ‘;‘, ‘\\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,

‘-‘, ‘\‘‘, ‘/‘, ‘\\‘, ‘[‘, ‘]‘, ‘{‘, ‘}‘, ‘è‘, ‘β‘, ‘±‘, ‘^‘, ‘’‘, ‘~‘, ‘-‘, ‘+‘, ‘.‘, ‘。‘, ‘\‘‘, ‘#‘, [email protected], ‘!‘, ‘&‘, ‘*‘, ‘‘, ‘%‘, ‘α‘, ‘γ‘, ‘ε‘, ‘‘, ‘‘, ‘‘ , ‘[‘, ‘]‘, ‘-‘, ‘δ‘, ‘+‘, ‘【‘, ‘】‘, ‘#‘, ‘;‘, ‘\\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;

$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 

$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);

}

retrun $message;

}

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

原文:http://liuzan.blog.51cto.com/6103676/1561279

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值