求助phpcms 批量提取内容到描述 乱码

php中文网
发布: 2016-06-23 14:18:44
原创
1141人浏览过

php phpcms 截取 乱码

PHPCMS 官方论坛人气不高,特求助CSDN的各位大神们。下面代码是想要批量提取内容表中的内容到描述字段中,并过滤字符和截取字数。

但是运行文件后,数据库description字段全是?  代码如下:


<?phpini_set('default_charset','UTF-8');	//思路:当文章摘要没有时,截取并过滤文章内容前100字或更多为摘要,文件的作用就是批量提取	set_time_limit(7200);//(根据情况)  7200意思是页面执行时间最长为2个小时,如果数据量很大时建议设置更大些。	$H_char = 'utf-8';//(必须修改)  目前是GBK编码,如果您用的是PHPCMS UTF-8编码就改成:utf-8	$conn=mysql_connect('localhost','root','root123');//(必须修改)  连接数据('localhost','用户名','密码')	if (!$conn){ exit("Connection Failed: " . $conn);}	mysql_select_db("shujuku");//(必须修改)  改成你自已的数据库	mysql_query("SET NAMES '$H_char'");	$H_resut = mysql_query("SELECT id FROM v9_news where catid in(12,13,14,15,16,17)");//(必须修改)  1、1212y_content改成你自已的内容数据表。2、catid in(这里填写的是你要修改的栏目id,为什么填写栏目id?因为你所想要修改的信息都是属于这些栏目,如果单独只修改某一个栏目的信息就这么写:catid=栏目id   )。	while($H_array = mysql_fetch_array($H_resut)){		$H_tary = mysql_fetch_array(mysql_query("SELECT content FROM v9_news_data where id='".$H_array["id"]."'"));//(必须修改) 1212y_c_case改成你自已的文章模型		mysql_query("update v9_news set description='".H_subs(H_preg_repe($H_tary["content"]),0,300,'N')."' where id='".$H_array["id"]."'");//(必须修改)  1212y_content改成你自已的内容数据表,300就是要提取的字节(知识点:一个汉字为2个字节,300就是提取150个汉字)	}	mysql_close($conn);	function H_subs($H_str,$H_start,$H_len,$H_flag='N'){				$H_tmep = "";		$H_str_len = strlen($H_str);		if($H_len < 1) return "";		$H_start = $H_start == 0 ? $H_start : (ord(substr($H_str, $H_start+1, 1)) > 0xa0 ? $H_start+1 : $H_start);		for($i = $H_start; $i < $H_str_len; $i++){			if($i >= ($H_start+$H_len)) break;			$H_size = ord(substr($H_str, $i, 1)) > 0xa0 ? 3 : 1;			$H_tmep .= substr($H_str, $i, $H_size);			$i += $H_size > 1 ? 1 : 0;		}		if(($H_flag == "Y" && $H_start+$H_len < $H_str_len) || $H_flag == "YY"){$H_tmep.="...";}		return $H_tmep;	}	function H_preg_repe($H_str){				$H_searh = array ("'<script[^>]*?>.*?</script>'si",  		                 "'<[/!]*?[^<>]*?>'si",           			                 "'([
])[s]+'",                 			                 "'&(quot|#34);'i",                 			                 "'&(amp|#38);'i",		                 "'&(lt|#60);'i",		                 "'&(gt|#62);'i",		                 "'&(nbsp|#160);'i",		                 "'&(iexcl|#161);'i",		                 "'&(cent|#162);'i",		                 "'&(pound|#163);'i",		                 "'&(copy|#169);'i",		                 "'&#(d+);'e");                    			$H_reple = array ("",		                  "",		                  "\1",		                  """,		                  "&",		                  "<",		                  ">",		                  " ",		                  chr(161),		                  chr(162),		                  chr(163),		                  chr(169),		                  "chr(\1)");		return trim(addslashes(nl2br(stripslashes(preg_replace($H_searh,$H_reple,$H_str)))));	}	echo "批量添加摘要成功";?>
登录后复制


回复讨论(解决方案)

$H_char = 'utf-8'; //这个错了,mysql 的开发者最初在书写代码时漏写了一个“-”,导致这个问题一直延续到今天
$H_char = 'utf8';

MySQL 中 utf-8 需写作 utf8

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号