php截取字符串函数(中文字符串)(1/2)_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php截取字符串函数(中文字符串)(1/2)_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2798字,纯文字阅读大概需要4分钟。
内容图文
![php截取字符串函数(中文字符串)(1/2)_PHP教程](/upload/InfoBanner/zyjiaocheng/180/1b6411c946434c4a961d8ea3089c1204.jpg)
php教程 截取字符串函数(中文字符串)
这是一款php 截取字符串函数哦,这是一款支持中文字符串哦,它可以截取html与中西文,等混合的内容,并且把html标签不算在字符截取之内,如果html标签没有闭合,程序将自动过滤多余的标签。
*/
function mysubstr( $str, $length ){
$tagcnt = 0;
$charcnt = 0;
$tag = '';
$maxlen = strlen( $str );
$resultstr = '';
$tagstack = array();for( $i = 0; $i < $length; $i++ ){
if( $str[$i] == '<' ){$resultstr .= $str[$i];
for( $j=$i; $str[$j]!='>'; $j++,$length++ ){
$tag .= $str[$j];
}
$tagcnt++;
$length++;
$tag .= '>';
//如果是开始标记,则入栈,如果是与之相对应的结束标记则出栈
if( preg_match('/<([^/]+)?>/i', $tag, $r) ){
echo '入栈:',htmlspecialchars($r[1]),'
';
array_push($tagstack, $r[1]);
}
elseif( preg_match( '/'.$tagstack[count($tagstack)-1].'/', $tag ) ){
echo '出栈:',htmlspecialchars($tagstack[count($tagstack)-1]),'
';
array_pop( $tagstack );
}$tag = '';
continue;
}$charcnt++;
$resultstr .= $str[$i];
}
echo '
最后结果为:';//栈是空的直接返回
if(empty($tagstack)){
return $resultstr;
}
//否则去掉没有结束标记的开始标记
else{
while(!empty($tagstack)){$tag = array_pop($tagstack);
$index = strrpos($resultstr, $tag);
for($i = $index-1; $resultstr[$i] != '>'; $i++ ){
$resultstr[$i] = '';
}$resultstr[$i++] = '';
}return $resultstr;
}
}$sttime = microtime(true);
$stmem = memory_get_usage();
$str = "a1
b2c3d4e5
f6g7h8";echo '处理结果为:
',htmlspecialchars( mysubstr( $str, 18 ) ),'
';echo "内存使用情况:",(memory_get_usage()-$stmem),'
';echo "算法运行时间(microtime):",(microtime(true)-$sttime),'
';
//方法二
/
**
* 函数名 html_substr
* 功能 从html串中截取指定长度的字串,html标记不计算在内
* 参数
* $str 要截取的串
* $len 要截取的长度
* $mode 不匹配的标记的处理方式 0 删去(默认),1 补齐
* 返回 截取到的串
* 说明
* 未考虑多字节字符,仅已字节做计数单位
* 未考虑可单独存在的标记
**/
function html_substr($str, $len, $mode=0) {
$ar= preg_split('/(|<[^>]*>)/s', $str, -1, preg_split_delim_capture);
foreach($ar as $k => $v) {
if($v{0} != '<') {
$len = $len - strlen($v);
if($len < 0) $ar[$k] = substr($v, 0, $len);
}else $ar[$k] = strtolower($v);
if($len <= 0) break;
}
$ar = array_slice($ar, 0, $k+1);
$len = count($ar);
foreach($ar as $k=>$v) {
if($v{0} == '<' && $v[1] != '/') {
$ch = str_replace('<', '</', $v);
for($i=$k+1; $i<$len && $ar[$i]!=$ch; $i++);
if($i == $len)
if($mode)
$ar[$len] = $ch . $ar[$len];
else
$ar[$k] = '';
}
}
return join('', $ar);
}
$str = "123abc456def789";echo '
';
echo html_substr($str, 5) . php_eol;
echo html_substr($str, 5, 1);
1 2
http://www.bkjia.com/PHPjc/632042.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632042.htmlTechArticlephp 截取字符串函数(中文字符串)这是一款php 截取字符串函数哦,这是一款支持中文字符串哦,它可以截取html与中西文,等混合的内容,...
内容总结
以上是互联网集市为您收集整理的php截取字符串函数(中文字符串)(1/2)_PHP教程全部内容,希望文章能够帮你解决php截取字符串函数(中文字符串)(1/2)_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。