我們在開發過程中,經常會碰到截取中文英文數字等的問題,大家知道中文所占的字符和英文數字是不同的;然後我們就會在項目的common裡寫一些日常的函數包含時間計算轉換和中英文字符截取的函數;比如截取中英文的函數沒個幾行代碼恐怕拿不下來的吧,現在就告訴大家一個簡單的(自己本地運行過的),如有問題,請大家多多指教
$c = 'ddaabbccaa'; $d = '地球需要我們每個人的愛護'; $frist1 = mb_substr( $c, 0, 1 ,"UTF-8"); // d $delete_last1 = mb_substr($d, -1,1,"UTF-8"); // 護 echo $frist1.'+++'.$delete_last1.'<br/>'; // d+++護 $frist2 = mb_substr( $d, 0, 1 ,"UTF-8"); // 地 $delete_last2 = mb_substr($d, -1,1,"UTF-8"); // 護 echo $frist2.'+++'.$delete_last2.'<br/>'; // 地+++護 $e = '11aa22cc33'; $f = 'aa地球需要我們每個人的愛護'; $g = '地球需要我們每個人的愛護gg'; $h = '地球需要我們每個人的愛護'; $first3 = mb_substr( $e, 0, 1 ,"UTF-8"); // 1 $last3 = mb_substr( $f, 0, 1 ,"UTF-8"); // a $delete_last3 = mb_substr($f, -1,1,"UTF-8"); // 護 $delete_last4 = mb_substr($g, -1,1,"UTF-8"); // g $frist4 = mb_substr( $g, 0, 1 ,"UTF-8"); // 地 $delete_last5 = mb_substr($h, -1,1,"UTF-8"); // 護 echo $first3.'+++'.$last3.'---'.$delete_last3.'***'.$delete_last4.'&&&'.$frist4.'<br/>'; // 1+++a---護***g&&&地 echo $last3.'...'.$delete_last3.'<br/>'; // a...護 echo $frist4.'...'.$delete_last5.'<br/>'; // 地...護 // 這樣不管字符串裡是中英文數字等都是可以的無需判斷,如: ”地...護“ 或者 “地...” 或者 “...護”
PS:過濾字符串中空格的方法
去除字符串首尾中英文空格的方法:
function mbTrim($str) { return mb_ereg_replace('(^( | )+|( | )+$)', '', $str); }
下面的正則驗證時過濾掉用戶輸入的連續空格,包括全角空格和半角空格
$user = mb_ereg_replace('^( | )+', '', $user); $user = mb_ereg_replace('( | )+$', '', $user); $age = mb_ereg_replace('^( | )+', '', $age); $age = mb_ereg_replace('( | )+$', '', $age); $method = mb_ereg_replace('^( | )+', '', $method); $method = mb_ereg_replace('( | )+$', '', $method); $address = mb_ereg_replace('^( | )+', '', $address); $address = mb_ereg_replace('( | )+$', '', $address);