如何使用PHP检查单词中的字母是否已更改


How do I check if a letter has been changed in a word using PHP?

如何使用PHP检查单词中的字母是否已更改?

例如,假设单词someword变为somEwOrd。如果更改是在字符串或数组中,我该如何使用PHP来检查它?

如果您需要了解哪些字母已更改。。。假设你的单词存储在一个变量中,你可以通过循环中的数组索引来访问它,看看哪些字符发生了变化。

$word = "someword";
$changedword = "someWoRd";
// array of changed letters by index
$changedletters = array();
for ($i=0; $i<strlen($word); $i++) {
  if ($changedword[$i] !== $word[$i]) {
    $changedletters[$i] = $word[$i];
  }
}
var_dump($changedletters);
array(2) {
  [4]=>
  string(1) "w"
  [6]=>
  string(1) "r"
}

或者跟踪诸如"从w到w"之类的变化

for ($i=0; $i<strlen($word); $i++) {
  if ($changedword[$i] !== $word[$i]) {
    $changedletters[$i] = array("from"=>$word[$i], "to"=>$changedword[$i]);
  }
}
array(2) {
  [4]=>
  array(2) {
    ["from"]=>
    string(1) "w"
    ["to"]=>
    string(1) "W"
  }
  [6]=>
  array(2) {
    ["from"]=>
    string(1) "r"
    ["to"]=>
    string(1) "R"
  }
}

只需使用strtolower(),并检查是否为strtolower($string1) == strtolower($string2)

strcasecmp,检查是否为strcasecmp($string1,$string2) == 0

您可能需要将字符串相互比较两次:

  1. 比较不区分大小写的字符串,以确定它们是否代表相同的字符串,而不考虑大小写(例如使用strcasecmp
  2. 如果#1为true,则比较区分大小写的字符串(例如使用strcmp

如果#1为true,#2为false,那么您就知道您处理的是相同的字符串,但字母大小写不同。