2011-02-07 2 views
0

ОК, у меня есть функция, которая сравнивает значения и возвращает результат, независимо от случая, а именно: между средствами Transfer = между средствами ПЕРЕДАЧИ здесь функция:

function fncResult ($expVal, $actVal) 
{ 
    $negNulls=array("-5","-10","-15","-20","-25"); 
    if (!in_array($expVal, $negNulls)) 
    { 
     if(strtolower($expVal)==strtolower($actVal)) 
     { 
      echo " 
      <td class='match' title='The values match.'>Match</td> 
     </tr>"; 
     } 
     else 
     { 
      echo " 
          <td class='notMatch' title='The values do not match.'>Not Match<br />No Match</td> 
         </tr>"; 
     } 
    } 
    else 
    { 
     echo " 
      <td class='null' title='The value in the XML was a negative null.'>Negative Null</td> 
     </tr>"; 
    } 
} 

Он работает около 99% времени, кроме случаев, когда это приходит к следующему:

//--Type of service requested 
     echo " 
      <tr> 
       <td>E02_04</td> 
       <td>Type of Service Requested</td> 
       <td>36. &lt;Nature of Call&gt;</td> 
       <td>$fldServReq</td> 
       <td>".fncGrabNemsis("E02_04",$fldServReq,$local)."</td> 
       <td>".fncIsSet($CZ_E02_04[1])."</td>"; 
     fncResult(fncGrabNemsis("E02_04",$fldServReq,$local),fncIsSet($CZ_E02_04[1])); 

Хотя это выглядит более сложным, это действительно просто strtolower ($ expVal) == strtolower ($ actVal), сравнение. Когда я повторяю сопоставляемые ценности, я получаю: «перенос промежуточной передачи» и «перенос без потерь» и «Нет соответствия» ... WTF? Может быть, потому что первое значение исходит от XML (UTF-8), а второе - от БД (?). Я не знаю, что делать, и я невероятно расстроен, так как это простая задача. Спасибо за любую помощь!

+4

Почему бы вам просто не использовать [strcasecmp] (http://uk3.php.net/manual/en/function.strcasecmp.php)? –

+0

Там могут быть пробелы. 'var_dump' и проверить, равны ли их длины, или сначала попробуйте' trim' на входе. – netcoder

+2

Весь этот код бесполезен, не видя в нем данных. Вполне вероятно, что у вас возникли проблемы с кодировкой символов. – meagar

ответ

0

Есть ли какие-нибудь конечные пробелы на ваших строках? Возможно, вложенность trim() вместе с strtolower() прояснит это? Если вы посмотрите на это в выводе HTML, посмотрите на источник и убедитесь, что там нет объекта HTML, который его испортил (т. Е. «Межплатформенный перевод» и «межплатформенность nbsp; transfer» - это не одно и то же, но может выглядеть так же, как и в HTML).

Окончательный вариант - «обновить» до mb_strtolower и посмотреть, является ли это проблемой кодирования.

+0

спасибо, что trim() работал для меня! – jreed121

0

Распечатайте байты expval и actval (например, urlencode). Существует много разных символов, которые выглядят точно так же (например, нормальное пространство и неразрывное пространство, или c, es и roman 100).

Смежные вопросы