php项目常用字符串函数

来源:互联网 发布:网金控股裁员 知乎 编辑:程序博客网 时间:2024/05/20 16:39
/**
 * 字符串截取,并且将多余内容替换为指定字符
 * @param 原字符串 $string
 * @param 截取的长度 $sublen
 * @param 开始位置 $start
 * @param 编码格式 $code
 * @param 被截取掉的字符的显示比如 xxxx..... $suffix
 * @return string
 */
public function mb_cut_str($string, $sublen, $suffix = '...', $code = 'UTF-8'){
$len = mb_strlen($string, $code);
if ($sublen >= $len) {
return $string;
}
$string = mb_substr($string, 0, $sublen, $code) . $suffix;
return $string;
}
/**
 * 手机号验证
 * @param unknown $mobile
 * @return boolean
 */
public function is_mobile($mobile){
// return strlen($mobile) == 11 && preg_match("/^13[0-9]{1}[0-9]{8}$|15[0189]{1}[0-9]{8}$|189[0-9]{8}$/",$mobile);
return strlen($mobile) == 11 && preg_match("/^(13\d{9}|14[57]\d{8}|15\d{9}|17[6780]\d{8}|18\d{9})$/", $mobile) ? true : false;
}
/**
 * 邮箱验证
 * @param type $email 邮箱
 */
public function is_email($email){
return strlen($email) > 6 && preg_match("/^[\w-]+@([a-zA-Z0-9-]+\.){1,3}[a-zA-Z]+$/", $email);
}
/**
 * 检查密码长度是否符合规定
 * @param string $password
 * @return bool
 */
public function is_password($password){
$strlen = strlen($password);
return $strlen >= 6 && $strlen <= 20 ? true : false;
}
/**
 * 字符串标亮
 * @param type $str 字符串
 * @param type $keywords 关键字
 * @param type $color 标亮颜色类
 * @return type
 */
public function str_light($str, $keywords, $color = "red"){
if (empty($keywords)) {
return $str;
}
$arr = [];
if (is_array($keywords)) {
foreach ($keywords as $val) {
preg_match('/[' . $val . ']+/ius', $str, $arr);
$finalrep = "<font color=" . $color . ">" . $val . "</font>";
$str = str_replace($val, $finalrep, $str);
}
} else {
$finalrep = "<font color=" . $color . ">" . $keywords . "</font>";
$str = str_replace($keywords, $finalrep, $str);
}
return $str;
}
/**
 * 转义字符串中html标签,如果参数为数组则遍历
 * @param mixed $string 待转换的字符
 * @return mixed
 */
function htmlspecialchars_deep($string){
return is_array($string) ? array_map('htmlspecialchars_deep', $string) : htmlspecialchars($string, ENT_QUOTES);
}
//将手机号的中间部分换成指定字符
function mobile_asterisk($mobile, $replaceStr = '*'){
if (!$this->is_mobile($mobile)) {
return $mobile;
}
$mobile_asterisk = substr($mobile, 0, 2) . str_repeat("*", 7) . substr($mobile, 9, 3);
return $mobile_asterisk;
}
//将邮箱的中间部分换成指定字符
function email_asterisk($email){
if (!$this->is_email($email)) {
return $email;
}
$email = explode("@", $email);
$name = $email[0];
$extend = $email[1];
if (strlen($name) >= 5) {
$count = strlen($name);
$start = substr($name, 0, 2);
$end = substr($name, $count - 2, 2);
$centerLength = $count - 4;
if ($centerLength > 3) {
$centerLength = 3;
}
$name = $start . str_repeat("*", $centerLength) . $end;
}
$email = $name . "@" . $extend;
return $email;
}
/*
 * 格式化时间
 * @param int $timestamp 时间戳
 * @return string 格式化之后字符串
 */
function showTime($timestamp){
$diff = time() - $timestamp;
$lang = array('hour' => '小时前', 'minute' => '分钟前', 'second' => '秒前', 'day' => '天前');
$d = floor($diff / 3600 / 24);
if ($d >= 1) {
//return date("m-d H:i", $timestamp);
return $d . $lang['day'];
}
$h = floor($diff / 3600);
if ($h >= 1 && $h < 24) {
return $h . $lang['hour'];
}
$m = ceil($diff / 60);
if ($m >= 1 && $m < 60) {
return $m . $lang['minute'];
}
if ($diff > 0 && $diff < 60) {
return $m . $lang['second'];
} else {
return '刚刚';
}
}
/**
 * 隐藏用户名
 * @param $name 字符
 */
function hideUserName($name, $code = "UTF-8"){
if (!$name) {
return $name;
}
$result = "";
if ($this->is_mobile($name)) {
$result = substr($name, 0, 3);
$result .= str_repeat("*", 5);
$result .= substr($name, 8, 3);
return $result;
}
if ($this->is_email($name)) {
$array = explode("@", $name);
if (strlen($array[0]) < 2) {
return $name;
} else if (strlen($array[0]) == 2) {
$result = substr($array[0], 0, 1) . "*@" . $array[1];
return $result;
} else {
$len = strlen($array[0]);
$result = substr($array[0], 0, 1) . str_repeat("*", $len - 2);
$result .= substr($array[0], $len - 1, 1) . '@' . $array[1];
return $result;
}
}
if (mb_strlen($name, $code) < 2) {
return $name;
} else if (mb_strlen($name, $code) == 2) {
$result = mb_substr($name, 0, 1, $code) . "*";
return $result;
} else {
$len = mb_strlen($name, $code);
$result = mb_substr($name, 0, 1, $code) . str_repeat("*", $len - 2);
$result .= mb_substr($name, $len - 1, 1, $code);
return $result;
}
}
/**
 * 过滤html标签
 * @param $str 字符
 */
public function filterHtmlTag($str){
$str = preg_replace("/\s+/", "", $str); //过滤多余回车
$str = preg_replace('/<([a-z0-9]+).*?>/i', "", $str);
$str = preg_replace('/<\/([a-z0-9]+?)>/i', "", $str);
$str = str_replace(array('&nbsp;', '&ldquo;', '&rdquo;', '&hellip;', "&", " ", "  ", " "), "", $str);
$str = preg_replace('/&([a-z]+);/i', '', $str);
$str = str_replace('&;', "", $str);
return $str;
}
/**
 * 获取内容图片
 * @param  [type]  $data 内容数据
 * @param  integer $num  几张
 */
public function get_content_pic($data, $num = 1) {
$pattern = "/<img.*?src=[\'|\"](.*?)[\'|\"].*?[\/]?>/";
preg_match_all($pattern, $data, $match);
if (!empty($match[1])) {
return $num == 1 ? $match[1][0] : array_slice($match[1], 0, $num);
} else {
return false;
}
}
/**
 * 根据url地址获取id
 */
function getIdByUrl($url) {
$contentid = '';
//$path = parse_url($url, PHP_URL_PATH); // /news/nanshi/2-3.shtml
//$paths = explode("/", $path); //array(0=>'',1=>'news',2=>'nanshi',3=>'2-3.shtml')
//$contents = $paths[count($paths) - 1]; //2-3.shtml
$contents = basename($url);
if (strstr($contents, '.')) {
$conarr = explode('.', $contents); //array(0=>'2-3',1=>'shtml')
$contentid = str_replace('-', '_', $conarr[0]); //2_3
if (strstr($contentid, '_')) {
$conids = explode('_', $contentid); //array(0=>'2',1=>'3')
$contentid = $conids[0]; //2
}
}
return $contentid;
}
0 0