2014-10-27 154 views
-3

我在做一個字符串比較,但strcasecmp總是輸出字符串不相等。爲什麼strcasecmp不能正常工作?

這裏是我的代碼:

<?php 

function multiexplode($delimiters,$string) { 

    $ready = str_replace($delimiters, $delimiters[0], $string); 
    $launch = explode($delimiters[0], $ready); 
    return $launch; 
} 

$owner = "Musica no tAatro: venha ja"; 
$owner_keys = multiexplode(array(".",":"," "),$owner); 
$musica_c = array("musica","teatro"); 
$musica = 0; 

    if(sizeof($owner_keys) > 1){ 
     foreach($musica_c as $key_c){ 
       foreach($owner_keys as $cat){ 
        if(strcasecmp($cat,$key_c)==0){ 
         ++$musica; 
        }else{ 
         echo "do not match<br>"; 
        } 
       } 
      } 
     } 
?> 

爲什麼strcasecmp檢測不同的弦?

+0

你有沒有試過'==='? – 2014-10-27 17:31:13

+1

這兩個比較失敗或只有tAatro(不應該是茶館)? – 2014-10-27 17:34:45

+0

是的,我試過{===},這也不起作用。都失敗了。 – user3709132 2014-10-27 17:38:14

回答

1

strcasecmp正在做正確的工作。

它匹配一對字符串,它是Musica & musica。最後只需echo $musica;。然而,另一個字符串對是不同的,它是tAatro & teatro。這就是爲什麼不匹配。

它是預期的行爲。

+0

對不起,但是strcasecmp沒有正常工作,因爲當我回聲$ musica的輸出爲0.並且每個比較的輸出「不匹配」。 – user3709132 2014-10-27 18:12:23

+0

我剛剛通過添加'echo $ musica;'運行您的PHP代碼來獲得1。嘗試在http://phpfiddle.org/lite中運行代碼 – 2014-10-27 18:16:11