如何使用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
。
您可能需要将字符串相互比较两次:
- 比较不区分大小写的字符串,以确定它们是否代表相同的字符串,而不考虑大小写(例如使用
strcasecmp
) - 如果#1为true,则比较区分大小写的字符串(例如使用
strcmp
)
如果#1为true,#2为false,那么您就知道您处理的是相同的字符串,但字母大小写不同。