用strtolower($ A)==用strtolower($ B)!=匹配?

时间:2011-02-07 21:07:22

标签: php mysql string compare match

好的,我有一个比较值并返回结果的函数,无论情况如何,即:Interfacility Transfer = INTERFACILITY 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),比较。当我回应所比较的值时,我得到:“interfacility transfer”和“interfacility transfer”和“No Match”... WTF?可能是因为第一个值来自XML(UTF-8)而第二个值来自数据库(?)我不知道该怎么做而且非常沮丧,因为这是一个简单的任务。谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

你的字符串上是否有任何尾随空格?将trim()strtolower()嵌套在一起可能会清除它吗?如果您在HTML输出中查看此内容,请查看源代码并确保其中没有HTML实体(即“interfacility transfer”和“interfacility&amp; nbsp; transfer”不一样,但是可能看起来在HTML中呈现的相同。)

最后一个选项是“升级”到mb_strtolower并查看它是否是编码问题。

答案 1 :(得分:0)

打印出expval和actval的字节(例如,使用urlencode)。有许多不同的字符看起来完全相同(例如,普通空格和不间断空格,或cesroman 100)。