PHP截取中文字符串函数总结
在网上看到有很多关于截取中文字符串的一些函数,在此本文章就为各位整理一下这些常用的截取中文字符串的例子吧,希望例子能帮助到大家哦。
常用的php函数
strstr(string,string) //从前面第一次出现某个字符串的地方截取到最后
strrchr(string,string) //从某个字符串从最后出现的位置截取到结尾
strpos(string,string[,int]) //某个字符串第一次出现的位置
strrpos(string,string) //某个字符串最后一次出现的位置
substr(string,int[,int]) //从指定位置开始截取字符串,可以指定截取的长度。
strlen(string) //获取字符串的长度PHP截取开始和结束标记间的字符
方法一:利用explode对字符串进行分
<?php /** * Get the content between $start and $end * * @param string $content 原始字符 * @param string $start 起始字符 * @param string $end 结束字符 * @return string */ function GetStringBetween($content, $start, $end) { $r = explode($start, $content); if (isset($r[1])) { $r = explode($end, $r[1]); return $r[0]; } return ''; } ?>
方法二:利用substr截取字符,由于php组件函数,因此字符串处理效率比explode方法要高一些
<?php /** * Get the content between $start and $end * * @param string $content 原始字符 * @param string $start 起始字符 * @param string $end 结束字符 * @return string */ function get_string_between($string, $start, $end) { $string = " " . $string; $ini = strpos($string, $start); if ($ini == 0) return ""; $ini+= strlen($start); $len = strpos($string, $end, $ini) - $ini; return substr($string, $ini, $len); } ?>
PHP截取所有符合起始与结束标记的字符串
<?php /** * Get all every strings between two tags * * @param string $string 原始字符串 * @param string $start 起始字符串 * @param string $end 结束字符串 * @return array */ function get_all_strings_between($string, $start, $end) { //Returns an array of all values which are between two tags in a set of data $strings = array(); $startPos = 0; $i = 0; //echo strlen($string)."n"; while ($startPos < strlen($string) && $matched = get_string_between(substr($string, $startPos) , $start, $end)) { if ($matched == null || $matched[1] == null || $matched[1] == '') break; $startPos = $matched[0] + $startPos + 1; array_push($strings, $matched[1]); $i++; } return $strings; } function get_string_between($string, $start, $end) { $ini = strpos($string, $start); if ($ini == 0) return null; $ini+= strlen($start); $len = strpos($string, $end, $ini) - $ini; return array( $ini + $len, substr($string, $ini, $len) ); } ?>
php截取起始与结束标记间字符,带截取次数、是否允许重复选项
<?php /** * Get all every strings between two tags * * @param string $string 原始字符串 * @param string $start 起始字符串 * @param string $end 结束字符串 * @return array */ function get_all_strings_between($string, $start, $end) { //Returns an array of all values which are between two tags in a set of data $strings = array(); $startPos = 0; $i = 0; //echo strlen($string)."n"; while ($startPos < strlen($string) && $matched = get_string_between(substr($string, $startPos) , $start, $end)) { if ($matched == null || $matched[1] == null || $matched[1] == '') break; $startPos = $matched[0] + $startPos + 1; array_push($strings, $matched[1]); $i++; } return $strings; } function get_string_between($string, $start, $end) { $ini = strpos($string, $start); if ($ini == 0) return null; $ini+= strlen($start); $len = strpos($string, $end, $ini) - $ini; return array( $ini + $len, substr($string, $ini, $len) ); } ?>
截取GB2312中文字符串
<?php //截取中文字符串 function mysubstr($str, $start, $len) { $tmpstr = ""; $strlen = $start + $len; for ($i = 0; $i < $strlen; $i++) { if (ord(substr($str, $i, 1)) > 0xa0) { $tmpstr.= substr($str, $i, 2); $i++; } else $tmpstr.= substr($str, $i, 1); } return $tmpstr; } ?>
截取utf8编码的多字节字符串
<?php //截取utf8字符串 function utf8Substr($str, $from, $len) { return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $from . '}' . '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,' . $len . '}).*#s', '$1', $str); } ?>
本文地址:http://www.phprm.com/code/64615.html
转载随意,但请附上文章地址:-)