Home > Backend Development > PHP Tutorial > 求助phpcms 批量提取内容到描述 乱码

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

WBOY
Release: 2016-06-23 14:18:44
Original
934 people have browsed it

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",           			                 "'([\r\n])[\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 "批量添加摘要成功";?>
Copy after login


回复讨论(解决方案)

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

MySQL 中 utf-8 需写作 utf8

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template