php截取字符串中的关键字,并高亮显示
<?php
$str = "hahaceshi测试一下关键字高亮显示,以及长字符串截取的问题!";
$key = "关键字"; $r = sub_key_h($str,$key);
echo $r; function sub_key_h($str,$key,$len=10,$enc='utf-8'){
$strlen = mb_strlen($str,$enc);
$keylen = mb_strlen($key,$enc);
$keypos = mb_strpos($str,$key,0,$enc);
$leftpos = $keypos - 1;
$rightpos = $keypos + $keylen; if($keylen > $len){
return "<font style='font-color:red;'>".mb_substr($key,0,$len,$enc)."</font>...";
}
$result = "<font style='font-color:red;'>".$key."</font>";
for($i = 0;$i<$len - $keylen;$i++){
if($leftpos >= 0){
$result = mb_substr($str,$leftpos--,1,$enc).$result;
}else{
$result .= mb_substr($str,$rightpos++,1,$enc);
}
}
if($leftpos >= 0){
$result = "...".$result;
}
if($rightpos < $strlen){
$result .= "...";
}
return $result;
}
?>
结果为
...shi测试一下<font style='font-color:red;'>关键字</font>...
php截取字符串中的关键字,并高亮显示的更多相关文章
- 怎么用JS截取字符串中第一个和第二个字母间的部分?
一.JS中用正则判断字符串是否有匹配正则的字符串部分,格式如下: /[a-zA-Z](.*?)[a-zA-Z]/.test('1a123d45678901a2') “.test”前面的部分是正则表达式 ...
- Excel中如何截取字符串中指定字符后的部分字符
1.如何给某列属性为时间整体加一个时间值: 场景一:假如我有一个excel中的某一列如下图所示,如何将该列的时间(用B代替整列)整体加一分钟呢?方法很简单,在空白单元格填写时间格式图中A所示 ...
- Android中如何截取字符串中某个字符之前或之后的字符串
代码改变世界 Android中如何截取字符串中某个字符之前或之后的字符串 //截取#之前的字符串 String str = "sdfs#d"; str.substring(0, s ...
- java截取字符串中的最后几个字符
Java中的String类提供了一个substring(int from, int to)方法用于截取字符串中位置为from到to-1位置的字符. 因为字符串的字符位置是从0开始的,而substrin ...
- [转]EXCEL截取字符串中某几位的函数——LeftMIDRight及Find函数的使用
原文地址:http://blog.sina.com.cn/s/blog_3f136a180102ymq5.html EXCEL截取字符串中某几位的函数 ——Left MID Right及Find函数的 ...
- Java中用正则表达式截取字符串中
Java中用正则表达式截取字符串中第一个出现的英文左括号之前的字符串.比如:北京市(海淀区)(朝阳区)(西城区),截取结果为:北京市.正则表达式为() A ".*?(?=\\()" ...
- C# - 怎么截取字符串中指定字符及其后面的字符
方法1:去掉空格以及后面的字符 //怎么截取让date的值为"2011/12/9",即去掉空格以及后面的字符 string date = "2011/12/9 2 ...
- 【JavaScript使用技巧】三个截取字符串中的子串,你用的哪个
[JavaScript使用技巧]三个截取字符串中的子串,你用的哪个 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! slice( ...
- 【面试题】JS使用parseInt()、正则截取字符串中数字
JS使用parseInt()和正则截取字符串中数字 点击打开视频讲解更加详细 parseInt() 函数 定义和用法 parseInt() 函数可解析一个字符串,并返回一个整数. 当参数 radix ...
随机推荐
- Azure SQL 数据库与新的数据库吞吐量单位DTU
azure中新的数据库吞吐量单位 (Database Throughput Unit, DTU) 是什么,以及用户如何通过它来了解新服务级别可以提供的服务内容.DTU 对于提供预测性更强的性能体验起着 ...
- dubbox使用
1.命令行下 git clone https://github.com/dangdangdotcom/dubbox 2.mvn install -Dmaven.test.skip=true 跳过测试编 ...
- Json.Net使用JSON Schema验证JSON格式【实例】
给出一个Json,验证其格式是否符合规则. { "coord": { //对象 "lon": 145.77, "lat": -16.92 } ...
- Quartz.NET Windows
Quartz.NET Windows 服务示例 想必大家在项目中处理简单的后台持续任务或者定时触发任务的时候均使用 Thread 或者 Task 来完成,但是项目中的这种需求一旦多了的话就得将任务调度 ...
- C# 把引用的dll嵌入到exe文件中
当发布的程序有引用其它dll, 又只想发布一个exe时就需要把dll打包到exe 当然有多种方法可以打包, 比如微软的ILMerge,混淆器附带的打包... 用代码打包的实现方式也有很好,本文只是其中 ...
- Java实现Tire
Trie,又称单词查找树或键树,是一种树形结构.典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它的优点是:最大限度地减少无谓的字符串比较,查询效率比 ...
- 微软Hololens学院教程-Hologram 220-空间声音(Spatial sound )【本文是老版本,与最新的微软教程有出入】
这是老版本的教程,为了不耽误大家的时间,请直接看原文,本文仅供参考哦! 原文链接https://developer.microsoft.com/EN-US/WINDOWS/HOLOGRAPHIC/ho ...
- OpenFramework中视频或者图片进行中心旋转、平移、放大、缩小、矫正(本例以视频为准,只给出主要代码)
/********** update mesh部分***********/ for(int i=0;i<4;i++) { mesh[i].clear(); //重要,不加的话,移动视频的四个角 ...
- java中的IO流之文件复制
O(∩_∩)O哈哈~ 1.综述 一门成熟的语言肯定具备的几个模块:IO,通信,线程,UI...... Java作为一门成熟的程序语言,其IO流是比较复杂的.上个图大家感受下: 简单分析一下,IO分为两 ...
- footer居底
结构部分: <div class="container"> <div class="header">header</div> ...