php截取一段文字的前一百个字的问题

作者&投稿:宗削 (若有异议请与网页底部的电邮联系)
php 如何提取一遍文章中的前一百个字,提纯文字不要图片和其他的代码?~

先用preg_replace将]+>替换为空,也就是去掉了所有的html标记,然后再取字符就行了。

这里有一个万能字符串截取函数,

function cut_str($string, $sublen, $start = 0, $charset = 'UTF-8')
{
if($charset == 'UTF-8')
{
$pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
preg_match_all($pa, $string, $t_string);

if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."...";
return join('', array_slice($t_string[0], $start, $sublen));
}
else
{
$start = $start*2;
$sublen = $sublen*2;
$strlen = strlen($string);
$tmpstr = '';

for($i=0; $i< $strlen; $i++)
{
if($i>=$start && $i< ($start+$sublen))
{
if(ord(substr($string, $i, 1))>129)
{
$tmpstr.= substr($string, $i, 2);
}
else
{
$tmpstr.= substr($string, $i, 1);
}
}
if(ord(substr($string, $i, 1))>129) $i++;
}
if(strlen($tmpstr)< $strlen ) $tmpstr.= "...";
return $tmpstr;
}
}

一般英文字符占一个字节,汉字占两个字节,有这么一种思路,在截取字符串的时候逐个判断要截取的字符是汉字还是英文字符,这样就不会出现错误了,下边给你帖一个我写的程序,你自己看下
<html>
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>

<body>
<?php
function msubstr($str,$start,$len){

}
?>
<form action="" name="myform" method="post">
输入字符串:<input type="text" name="str" value="5555我爱My祖国" /><br />
输入起始位置:<input type="text" name="str_start" /><br />
输入截取长度:<input type="text" name="str_len" /><br />
<input type="submit" name="sub" value="开始截取字符串" />
</form>
<?php
/*截取字符串的函数--------------数组式截取*/
function msubstr2($str,$start,$len){
$t = explode(" ",microtime());
$tt = round($t[0],5);
//将字符串中每个字符分开 并放到数组中
$str_arr = array();
$j = 1;
for($i=0;$i<strlen($str);$i++){
if(ord(substr($str,$i,1))>0xa0){ //说明是汉字 则需要一次截取3个字符
$str_arr[$j] = substr($str,$i,3);
$i = $i+2;
}else{
$str_arr[$j] = substr($str,$i,1);
}
$j++;
}
print_r($str_arr);
for($i=$start;$i<=$len+$start-1;$i++){
if($i>count($str_arr)){ //判断是否超出数组最大长度 如果是 则结束循环
break;
}
$str_temp .= $str_arr[$i];
}
$t = explode(" ",microtime());
$ttt = round($t[0],5);
return $ttt-$tt;
//return $str_temp;
}
function msubstr1($str,$start,$len){
$t = explode(" ",microtime());
$tt = round($t[0],5);
$j = 0; //记录截取的字符串的字符位置
$s = 0; //记录已经截取的字符长度
$str_temp = "";//记录截取的字符串
$k = strlen($str);
for($i=0;$i<$k;){//循环全部字
if($s>=$len) break;//如果已经截取的字符串长度超过要截取的长度 跳出循环 返回结果
if(ord(substr($str,$i,1))>0xa0){ //判断是否为汉字
if($j+1>=$start){//如果当前截取字符位置大于等于要截取的字符串的开始位置并且当前已经截取的字符长度还没有超出要截取的字符串的长度 则将此字符为要截取的字符
$str_temp .= substr($str,$i,3);
$s++;//已经截取的字符串长度加1
}
$j++;//当前截取的字符串的位置加1
$i+=3;//确定为汉字 在utf8编码下占三个英文字符的长度 则需要记录三个字符
}else{
if($j+1>=$start){
$str_temp .= substr($str,$i,1); //截取英文字符
$s++;//已经截取的字符串长度加1
}
$j++;//当前截取的字符串的位置加1
$i++;//非汉字字符占一个字符的长度
}
}
$t = explode(" ",microtime());
$ttt = round($t[0],5);
//return $ttt-$tt;
return $str_temp;
}
if($_POST[sub]){
echo msubstr1($_POST[str],$_POST[str_start],$_POST[str_len]);
}
?>
</body>
</html>

用php的
string mb_substr ( string $str , int $start [, int $length [, string $encoding ]] )

前提是php要安装 mb扩展

mb_substr($string,0,100)


hp电脑win10截屏(HP笔记本电脑截屏)
答:惠普电脑截图是ctrl+ PrScrn。1. 截屏时,通过键盘左下方的功能键fn键加上键盘右上方的截屏键prt sc键组合使用即可实现复制屏幕。2. 在贴图界面上用点击鼠标粘贴所截屏幕画面或用ctrl键+C键粘贴即可。 注:部分笔记本计算机会使用全尺寸键盘即与桌面台式机键盘布局相同的键盘。2. hp笔记本电脑如何...

hp怎么截屏啊?
方法一、1.Win+shift+S:可以选择截图区域的大小,Ctrl+V粘贴在word、微信等应用里;2.Prtsc:对整个页面截图,Ctrl+V粘贴,无法直接编辑修改;3.Win键+Prtsc:对整个页面截图,无法直接编辑修改,自动保存在此电脑—图片—屏幕截图里;4.Alt+Prtsc:对打开的窗口进行截图,Ctrl+V粘贴,无法直接编辑修...

hp电脑截图怎么截
1,打开惠普笔记本电脑,在点击‘开始’按钮。2,在开始内找到‘Windows附件’文件夹,点击打开。3,选择‘截图工具’,打开‘截图工具’选项点击进入。4,最后,点击‘新建’按钮即可对惠普笔记本电脑进行截图,问题解决。

惠普电脑快捷键推荐_惠普电脑的快捷键
1、快捷键Print Screen 简写为Prt Sc :截屏的时候直接按下Prt Sc键 系统会将整个屏幕截图下来。存在剪切板中,使用时直接Ctrl+V 粘贴即可,若想保存成文件的话,打开系统画图工具,Ctrl+V粘贴,保存即可。此外 Prt Sc 还可以搭配Alt键使用,用于截取某一个窗口:方法:选中需要截取的窗口,按下Alt +...

惠普笔记本截屏怎么截?
要截取惠普笔记本的屏幕,请按照以下步骤操作:1. 找到键盘左下角的“fn”键,并持续按住不松手。2. 同时按下键盘右上角的“Home”(或“Prt Sc”)键。保持这两个键按下约1秒钟后,同时松开。3. 选择你想要截图的区域。4. 打开图片编辑软件,点击左上角的下三角图标。接着,依次点击“Save As...

惠普笔记本截屏快捷键是哪个?
在一些惠普笔记本电脑上,由于键盘空间有限,“Print Screen”键的功能可能与Fn键结合使用。如果你的键盘上有Fn键,并且“Print Screen”键上有一个与之相关的图标或文字说明,那么你可能需要同时按下“Fn + Print Screen”来执行截图操作。3. 截取活动窗口(如果使用的...

如何在联想和惠普笔记本电脑上截屏
大多数惠普笔记本电脑的键盘上都有一个“打印屏幕”键,就在删除键旁边。根据型号,这可能缩写为PrtScn或PrtSC。同时按下Windows和PrintScreen键 这将捕获全屏 打开画图或任何其他图像编辑程序 按CTRL+V粘贴屏幕截图 将文件另存为JPG或PNG 如何在键盘上显示的联想上截屏 上述步骤将截取全屏。如果您只想...

截取指定字符中的文字,如何用函数实现,如图?
如下图,给你贴出了代码段。可以利用字符串的substring函数来进行截取。其中,substring函数有两个参数:1、第一个参数是开始截取的字符位置。(从0开始)2、第二个参数是结束字符的位置+1。(从0开始)indexof函数的作用是查找该字符串中的某个字的位置,并且返回。

我的是hp笔记本,截屏幕上的图,应该是哪个键啊!!急
Print Screen应该在insert上,同时按Fn+insert就是Print Screen键 同时按住Fn+Print Screen+ctrl+alt

HP电脑截屏快捷键是什么?
第一种:Ctrl + PrScrn 使用这个组合键截屏,获得的是整个屏幕的图片 第二种:Alt + PrScrn 这个组合键截屏,获得的结果是 当前窗口的图片 第三种:打开qq,使用快捷键 Ctrl + Alt + A, 这样可以在屏幕上的任何地方截屏,还可以在截屏图片上做一些简单的注释和处理 第四种:使用专业的截屏软件。

灵石县18736787929: php 如何提取一遍文章中的前一百个字,提纯文字不要图片和其他的代码? -
甫国永瑞: 先用preg_replace将]+>替换为空,也就是去掉了所有的html标记,然后再取字符就行了.

灵石县18736787929: 懂 php 的进来,帮忙截取下文章开头部分做摘要. -
甫国永瑞: 函数://mb_substr($string,$start[,$length][,encode]);<?php $str = blog_content(); mb_substr($str,0,100,utf-8);?>按内容意思写的,你试一下.

灵石县18736787929: 用php如何切取一篇文章里面开头的一部分字 -
甫国永瑞: 字符串截取函数可以 /* 截取一定长度的完整的中文字符 */ function cnsubstr($str,$strlen=10) { if(empty($str)||!is_numeric($strlen)){ return false; } if(strlen($str)return $str; }//得到第$length个字符 并判断是否为非中文 若为非中文//直接返回$length长...

灵石县18736787929: PHP中如何读取数据前100字符
甫国永瑞: www.yemaosheng.com'; echo "mb_substr:" . mb_substr($str, 0, 6, 'utf-8'); echo " "; echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8'); ?> 输出结果如下: mb_substr:我是一串比较 mb_strcut:我是

灵石县18736787929: php正则匹配如何截取前200个字符,跪求大神解答 -
甫国永瑞: 如下是一个测试脚本,$str = "abcd123456";$pattern = '/^(.{0,6}).*?$/i'; preg_match($pattern, $str, $matches); print_r($matches); 效果如下图:我看了你的$pattern,即/^(.{0,200}).*?$/i首先你使用了^.......$这个结构表示精确匹配某个字符串...

灵石县18736787929: PHP中如何用正则表达式分离出某个关键词前后的文字? -
甫国永瑞: <?php$temp = 'www.baidu.com';$str = '多谢专家!太详细了!“具体取关键词左右的文字是什么意思,是取该关键字前100个字,和该关键字后100个字码”:是这样的,就是取关键词前、后各一百个字.剩下的我仔细琢磨琢磨~======www....

灵石县18736787929: php获取文章内容前64个字,代码怎么写,请高手指教! -
甫国永瑞: //不能使用substr,因为其不能截取中文字符,要用在description描述,必须使用能截取中文字符的程序 echo cnw_mid($title[1][0],0,64);//这段插入要显示的地方 function cnw_mid($str,$start,$slen){ $str_len = strlen($str); $strs = Array(); for($i=0;...

灵石县18736787929: 怎么截取中文文章的前几百字啊? - 技术
甫国永瑞: 我的BLOG代码库里有这些函数库GB2312截取:[php] 0xa0) {? ?? ?? ?? ?? ?$tmpstr .= substr($str, $i, 2);? ?? ?? ?? ?? ?$i++;? ?? ?? ???} else? ?? ?? ?? ?? ?$tmpstr .= substr($str, $i, 1);? ?? ? }? ?? ? return $tmpstr;? ?}? ??> [/php]UTF-8截取:[php] ??[/php][i][/url]

灵石县18736787929: PHP截取字符串长度 -
甫国永瑞: php截取中文字符串无乱码函数:function ZHsubstr($str, $start=0, $length, $charset="utf-8"){ $len = strlen($str); //原字节数 if($len > $length) $suffixStr = "…"; else $suffixStr = ""; if(function_exists("mb_substr")) return mb_substr($str, $...

灵石县18736787929: php 截取字符 前面两个字 -
甫国永瑞: 建议用正则 $str = '提问:你是谁啊?'; if ( preg_match('/^提问*/i', $str ) ) { }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网