PHP用连字符比较字符串

时间:2015-10-23 12:32:47

标签: php

我需要比较2个字符串而不替换任何东西。

$str1 = 'short-eared owl';
$str2 = 'short-eared owl';

if (strcmp($str1, $str2)===0) { do this and that …}

这里的问题是连字符。即使两个字符串相等,strcmp()也不会导致0(相等)。为什么?

如何正确比较这些字符串?

更新

这是必不可少的代码

<?php
    $cat=$_GET["cat"];

    if (($handle = fopen($csvFile, "r")) !== FALSE) {
        $dataArray = fgetcsv($handle, 1000, ";"); 
        while (($dataArray = fgetcsv($handle, 1000, ";")) !== FALSE) {
            for ($i=0; $i < 4 ; $i++) {
                if (strcmp($cat,$dataArray[$i])===0 ) {
                // do this and that
                }
            }
        }
        fclose($handle);
    }
?>

我所做的是比较$ _GET var,这是一个类似于短耳猫头鹰的字符串&#39;对cvs文件的列。如果我找到了短耳猫头鹰&#39;在那个文件中我回来了。但是因为连字符,strcmp()在这里不起作用。如果为了测试目的而手动删除了hypen,strcmp()匹配。

UDATE 2

在php网站here评估strcmp()函数时,有一个&#34; Anonymous&#34;用户贡献说明collation。他写道:

  

总之,strcmp()不一定使用ASCII代码顺序   每个角色都喜欢在C&#39; C&#39; locale,而是解析每个字符串   匹配语言特定的字符实体(例如&#39; ch&#39; in   西班牙语,或者&#39; dz&#39;在捷克语中,然后比较其整理顺序。   当两个字符实体具有相同的归类顺序时(例如   &#39; SS&#39;和&#39;�&#39;在德语中,它们相对于它们的代码进行了比较   strcmp(),或被strcasecmp()认为相等。

如果这是连字符char的问题怎么解决呢?

1 个答案:

答案 0 :(得分:0)

你写的代码工作正常,我自己检查了

$str1 = 'short-eared owl';
$str2 = 'short-eared owl';

if (strcmp($str1, $str2)===0) { 
    echo "success";

} else{
    echo 'fail';
}