Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较php中的两个字符串,获取不带';不匹配?_Php - Fatal编程技术网

比较php中的两个字符串,获取不带';不匹配?

比较php中的两个字符串,获取不带';不匹配?,php,Php,有些用户喜欢用大写字母写文章标题,这完全令人讨厌。我不想让他们再写一遍,而是想知道他们写的标题中大写的百分比,这样,如果超过50%,我就用strtolower 我的想法是将它们的字符串转换为小写,看看它与原始字符串有多大的不同(3个不同的字符意味着最初有3个大写字符): 如何比较$title和$title2以获得不匹配的字符数 例如: $title='AAAa'; $title2=strtolower($title); $differences=0; 对于($i=0,$l=strlen($tit

有些用户喜欢用大写字母写文章标题,这完全令人讨厌。我不想让他们再写一遍,而是想知道他们写的标题中大写的百分比,这样,如果超过50%,我就用strtolower

我的想法是将它们的字符串转换为小写,看看它与原始字符串有多大的不同(3个不同的字符意味着最初有3个大写字符):

如何比较$title和$title2以获得不匹配的字符数

例如:

$title='AAAa';
$title2=strtolower($title);
$differences=0;
对于($i=0,$l=strlen($title);$i<$l;$i++){
如果($title{$i}!=$title2{$i}){
$differences++;
}
}

您可以试试。在得到的数字中,单位告诉你需要添加多少个字母,数千个告诉你更改了多少个字母(这里可能是你最想要的),数百万告诉你删除的字母的数量。

使用PHP的本机函数,我想你会得到你想要的。使用示例:

$title = 'AAAa';
$title2 = 'aaaa';

similar_text ( $title , $title2, $percentege );

echo $percentege . '%'; // Output: 25%
您也可以这样使用它:

echo similar_text ( $title , $title2 ); // Output: 1
第一种用法返回两个字符串之间的相似性百分比,第二种用法返回两个字符串具有的相似字符的数量


希望它能帮助你

你能使用ucfirst或类似的工具吗?我想知道这是否是一个很好的工具。。。。事实上,在重读你的问题之后,我认为这可能有点过头了。@Phoenix
levenshtein()
对于这种情况来说是过头了,
levenshtein()
的复杂性是
O(m*n)
,但这里只需要
O(n)
$title = 'AAAa';
$title2 =  strtolower($title);
$differences = 0;
for ($i=0,$l=strlen($title); $i < $l; $i++) {
  if ($title{$i} !== $title2{$i}) {
    $differences++;
  }
}
$title = 'AAAa';
$title2 = 'aaaa';

similar_text ( $title , $title2, $percentege );

echo $percentege . '%'; // Output: 25%
echo similar_text ( $title , $title2 ); // Output: 1