使用PHP similar text计算两个字符串相似度
在网站开发中,我们经常使用php similar text 计算两个字符串相似度;
1,similar_text的用法
如果我想计算"ly89cn"和"ly89"的相似程度,有两种表示方法
echo similar_text('ly89cn', 'ly89');
这样输出4,因为他们有4个字符相等
similar_text('ly89cn', 'ly89', $percent);
echo $percent;
这样输出80,$percent代表百分比,说明他们有80%的相似程度
当然也可以比较两个中文字符,比如“王业楼的个人博客”和“王业楼”
echo similar_text('王业楼的个人博客', '王业楼');
这样输出9,表示他们的9个字节数相等
similar_text('王业楼的个人博客', '王业楼', $percent);
echo $percent;
输出54.545454545455,注意中文字符可能不大准确!
PHP similar_text() 函数
实例
计算两个字符串的相似度,并返回匹配字符的数目:
<?php
echo similar_text("Hello World","Hello Shanghai");
?>
运行实例
定义和用法
similar_text() 函数计算两个字符串的相似度。
该函数也能计算两个字符串的百分比相似度。
注释:levenshtein() 函数比 similar_text() 函数更快。不过,similar_text() 函数通过更少的必需修改次数提供更精确的结果。
语法
similar_text(string1,string2,percent)
参数 | 描述 |
---|---|
string1 | 必需。规定要比较的第一个字符串。 |
string2 | 必需。规定要比较的第二个字符串。 |
percent | 可选。规定供存储百分比相似度的变量名。 |
技术细节
返回值: | 返回两个字符串的匹配字符的数目。 |
PHP 版本: | 4+ |
更多实例
例子 1
计算两个字符串之间的百分比相似度:
<?php
similar_text("Hello World","Hello Shanghai",$percent);
echo $percent. "%";
?>
相关推荐
-
PHP实现的简易版图片相似度比较
由于相似图片搜索的php实现的 API 不怎么符合我的用途,所以我重新定义 API 的架构,改写成比较简单的函数方式,虽然还是用对象的方式包装. 复制代码 代码如下: <?php /** * 图片相似度比较 * * @version $Id: ImageHash.php 4429 2012-04-17 13:20:31Z jax $ * @author jax.hu * * <code> * //Sample_1 * $aHas
-
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
similar_text()中文汉字版 复制代码 代码如下: <?php //拆分字符串 function split_str($str) { preg_match_all("/./u", $str, $arr); return $arr[0]; } //相似度检测 function similar_text_cn($str1, $str2) { $arr_1
-
php数字游戏 计算24算法
算法思路:把每一个数字看做一个独立的数学表达式,表达式之间加上标点符号组合成新表达式,一共组合4次,表达式之间的所有组合可以通过递归来实现. 代码如下: 复制代码 代码如下: <?php /** * A 24 maker * @version 1.0.0 * @author laruence<laruence at yahoo.com.cn> * @copyright (c) 2009 http://www.laruence.com */ class TwentyFourCal { pu
-
php查询相似度最高的字符串的方法
本文实例讲述了php查询相似度最高的字符串的方法.分享给大家供大家参考.具体如下: 根据传入的字符串和数组,返回数组中相似度最高的字符串 1. PHP代码如下: function closest_word($input, $words) { $shortest = -1; foreach ($words as $word) { $lev = levenshtein($input, $word); if ($lev == 0) { $closest = $word; $shortest = 0;
-
php计算两个整数的最大公约数常用算法小结
本文实例讲述了php计算两个整数的最大公约数常用算法.分享给大家供大家参考.具体如下: 复制代码 代码如下: <?php //计时,返回秒 function microtime_float () { list( $usec , $sec ) = explode ( " " , microtime ()); return ((float) $usec + (float) $sec ); } /////////////////////////////////
-
PHP数据分析引擎计算余弦相似度算法示例
本文实例讲述了PHP数据分析引擎计算余弦相似度算法.分享给大家供大家参考,具体如下: 关于余弦相似度的相关介绍可参考百度百科:余弦相似度 <?php /** * 数据分析引擎 * 分析向量的元素 必须和基准向量的元素一致,取最大个数,分析向量不足元素以0填补. * 求出分析向量与基准向量的余弦值 * @author yu.guo@okhqb.com */ /** * 获得向量的模 * @param unknown_type $array 传入分析数据的基准点的N维向量.|eg:array(1,1
-
PHP大转盘中奖概率算法实例
本文实例讲述了PHP大转盘中奖概率算法的实现方法,分享给大家供大家参考.具体如下: 大转盘是最近很多线上网动中一个比较有意思的东西了,下面我们就来看看这个大转盘中奖概率算法与例子,希望对各位有所帮助. 这是一个APP客户端有大转盘抽奖算法,具体如何抽奖当然在我们服务端实现了.下面和大家简单分享一下实现代码: 复制代码 代码如下: header("Content-type: text/html; charset=utf-8"); $prize_arr = array( '0' =>
-
如何使用php绘制在图片上的正余弦曲线
以前用actionscript写动态绘制三角函数曲线,其实php输出三角函数曲线也很简单. 复制代码 代码如下: <?php define("MAX_WIDTH_PIXEL", 600); define("MAX_HEIGHT_PIXEL", 240); //发送标头信息 header("Content-type: image/gif"); //建立图像 $img = imageCreate(MAX_WIDTH_PIXEL, MAX_HEI
-
php编写的抽奖程序中奖概率算法
们先完成后台PHP的流程,PHP的主要工作是负责配置奖项及对应的中奖概率,当前端页面点击翻动某个方块时会想后台PHP发送ajax请求,那么后台PHP根据配置的概率,通过概率算法给出中奖结果,同时将未中奖的奖项信息一并以JSON数据格式发送给前端页面. 先来看概率计算函数 function get_rand($proArr) { $result = ''; //概率数组的总概率精度 $proSum = array_sum($proArr); //概率数组循环 foreach ($proArr as
-
php 大数据量及海量数据处理算法总结
下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题.下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论. 1.Bloom filter 适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集 基本原理及要点: 对于原理来说很简单,位数组+k个独立hash函数.将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明
-
关于PHP的相似度计算函数:levenshtein的使用介绍
使用说明先看手册上 levenshtein() 函数的说明: levenshtein() 函数返回两个字符串之间的 Levenshtein 距离. Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符. 例如把 kitten 转换为 sitting: sitten (k→s)sittin (e→i)sitting (→g)levenshtein() 函数给每个操作(替换
-
PHP中计算字符串相似度的函数代码
similar_text - 计算两个字符串的相似度 int similar_text ( string $first , string $second [, float &$percent ] ) $first 必需.规定要比较的第一个字符串. $second 必需.规定要比较的第二个字符串. $percent 可选.规定供存储百分比相似度的变量名. 两个字符串的相似程度计算依据 Oliver [1993] 的描述进行.注意该实现没有使用 Oliver 虚拟码中的堆栈,但是却进行了递归调用,这
随机推荐
- Java语言实现反转链表代码示例
- SQL语句详细说明[部分]
- 浅谈angularjs module返回对象的坑(推荐)
- angularjs中ng-attr的用法详解
- C#(.net)水印图片的生成完整实例
- php对数组排序代码分享
- Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
- 编写PHP脚本清除WordPress头部冗余代码的方法讲解
- 浅谈Python的异常处理
- c++冒泡排序示例分享
- android中强制更新app实例代码
- axios基本入门用法教程
- Windows下安装PHP单元测试环境PHPUnit图文教程
- bat实现的模仿黑客帝国里面的数码雨
- 简单介绍MySQL中的事务机制
- yii2 modal弹窗之ActiveForm ajax表单异步验证
- jQuery 取值、赋值的基本方法整理
- jquery.post用法关于type设置问题补充
- Linux下root初始密码设置方法
- Android实现图片左右滑动效果