簡體   English   中英

PHP用連字符比較字符串

[英]PHP compare strings with hyphen

我需要比較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與cvs文件的列進行比較,該字符串是“短耳貓頭鷹”之類的字符串。 如果在該文件中找到“短頭貓頭鷹”,我將返回。 但是由於連字符,strcmp()在這里不起作用。 如果出於測試目的手動刪除了hypen,則strcmp()匹配。

UDATE 2

在php站點上評估strcmp()函數時, 這里有一個“匿名”用戶貢獻注釋,它涉及collation 他寫 :

總之,strcmp()不一定像“ C”語言環境那樣使用每個字符的ASCII碼順序,而是解析每個字符串以匹配特定於語言的字符實體(例如西班牙語的“ ch”或“ dz” (捷克文),然后比較其排序順序。 當兩個字符實體具有相同的排序規則順序(例如德語中的“ ss”和“ ...”)時,它們將通過strcmp()相對於其代碼進行比較,或者被strcasecmp()視為相等。

如果這是連字符問題,該如何解決?

您編寫的代碼很好用,我自己檢查了一下

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

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

} else{
    echo 'fail';
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM