检查php中的相似性


Checking similarity in php

我需要检查$string1是否像$string2,但我不希望一个文本与另一个文本不同,如果它以相同的字符串开始。例如,我想输入

 if (admin.example2 == admin.example1) 

应该返回true!最好的方法是什么?

我的确切要求。一个if条件用于检查数组中是否存在以admin开头的字符串。

 if ($client_name like 'admin') {
   ...
   ...
  }

数组中的条目数量是无限的。我只是想检查是否存在以"admin"开头的字符串

似乎你正在寻找similar_text在PHP

<?php
similar_text("admin.example2", "admin.example1", $simpercentage);
if($simpercentage>90)
{
    echo "Both strings are like ".round($simpercentage)."% similar.";
}

OUTPUT :

Both strings are like 93% similar.

设置一个百分比(在上面的例子中,我设置了90%的相似度),你可以根据自己的需要进行调整。如果两个字符串都是admin.example2admin.example2(如果两个字符串相同),代码将返回100%匹配


由于问题被大幅编辑…

<?php
$arr=['admin1','administrator','admin2','I am an admin','adm','ADMIN'];
array_map(function ($v){ if(stripos(substr($v,0,5),'admin')!==false){ echo "$v starts with the text admin<br>";}},$arr);

OUTPUT :

admin1 starts with the text admin
administrator starts with the text admin
admin2 starts with the text admin
ADMIN starts with the text admin

根据您新的指定要求,如果字符串以'admin'开头,可以这样检查:

$your_string = 'admin.test';
if(strcmp(substr($your_string, 0, 5), "admin") == 0) 
{
  echo 'begins with admin';
} else {
  echo 'does not begin with admin';
}
编辑:

如果您有一个字符串数组,例如$array = array("admin.test", "test", "adminHello", "hello"),您可以编写一个函数来检查该数组是否包含至少一个以admin开头的字符串:

function checkArrayStartsWithAdmin($array) 
{
  $result = false;
  foreach($array as $key => $value) 
  {
    if(strcmp(substr($value, 0, 5), "admin") == 0) 
    {
      $result = true;
      break;
    }
  }
  return $result;
}

您可能需要了解一下levenshtein距离的概念。

你可以使用这个php函数。

http://www.php.net/manual/es/function.levenshtein.php