Ich habe einige Probleme beim Vergleich eines Arrays mit norwegischen Zeichen mit einem utf8 Zeichen.PHP utf8 Problem
Alle Zeichen außer den speziellen norwegischen Zeichen (æ, ø, å) funktionieren gut.
function isNorwegianChar($Char)
{
$aNorwegianChars = array('a', 'A', 'b', 'B', 'c', 'C', 'd', 'D', 'e', 'E', 'f', 'F', 'g', 'G', 'h', 'H', 'i', 'I', 'j', 'J', 'k', 'K', 'l', 'L', 'm', 'M', 'n', 'N', 'o', 'O', 'p', 'P', 'q', 'Q', 'r', 'R', 's', 'S', 't', 'T', 'u', 'U', 'v', 'V', 'w', 'W', 'x', 'X', 'y', 'Y', 'z', 'Z', 'æ', 'Æ', 'ø', 'Ø', 'å', 'Å', '=', '(', ')', ' ', '-');
$iArrayLength = count($aNorwegianChars);
for($iCount = 0; $iCount < $iArrayLength; $iCount++)
{
if($aNorwegianChars[$iCount] == $Char)
{
return true;
}
}
return false;
}
Wenn jemand eine Idee über das, was ich tun kann, bitte, lassen Sie es mich wissen.
Update:
Der Grund dafür ist für die Notwendigkeit ist, dass ich versuche, eine Textdatei zu analysieren, die Linien mit norwegischen und den chinesischen Wörtern enthält, wie ein Wörterbuch. Ich möchte die Zeile in Strings aufteilen, eine mit dem norwegischen Wort und eine mit dem chinesischen. Dies wird später in eine Datenbank eingefügt. Beispiel Linien:
IMPULSIV 形 衝動 的
imøtegå 動 反對, 反駁
imøtekomme 動 符合
alkoholmisbruk (er) 名 濫用 酒精 (名 濫用 酒精 的 人)
alkoholpåvirket
alkotest 測試 呼吸 性 酒精 測試
alkymi (st) 名 煉金術 (名 煉金術 士)
alle, alt, alle 形, 全部, 所有
Wie Sie die Worte sehen, es kann sein könnte Räume zwischen so kann ich nicht etwas verwenden leicht explodieren, um zwischen den chinesischen und norwegischen Wörtern zu teilen. Was ich tue ist die isNorwegianChar und Schleife durch die Linie, bis ich ein Zeichen finde, das nicht im Array ist.
Das Problem ist, dass es æ, ø und å nicht als norwegisches Zeichen zurückgegeben wird und es glaubt, dass das chinesische Wort begonnen hat. Hier
ist der Code:
//Open file.
$rFile = fopen("norsk-kinesisk.txt", "r");
// Loop through the file.
$Count = 0;
while(!feof($rFile))
{
if(40== $Count)
{
break;
}
$sLine = fgets($rFile);
if(0 == $Count)
{
$sLine = mb_substr($sLine, 3);
}
$iLineLength = strlen($sLine);
$bChineseHasStarted = false;
$sNorwegianWord = '';
$sChineseWord = '';
for($iCount2 = 0; $iCount2 < $iLineLength; $iCount2++)
{
$char = mb_substr($sLine, $iCount2, 1);
if(($bChineseHasStarted === false) && (false == isNorwegianChar($char)))
{
$bChineseHasStarted = true;
}
if(false === $bChineseHasStarted)
{
$sNorwegianWord .= $char;
}
else
{
$sChineseWord .= $char;
}
//echo $char;
}
$sNorwegianWord = trim($sNorwegianWord);
$sChineseWord = trim($sChineseWord);
$Count++;
}
fclose($rFile);
Welche Version von PHP? – leek
Die PHP-Version ist 5.2.5 – Christoffer
Sie könnten range() als Kurzschrift verwenden, wenn Sie Ihr Array erstellen. –