• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Problem mit Strlen und Umlauten

Status
Für weitere Antworten geschlossen.

CGollhardt

Mitglied
PHP:
<?php
if ($_GET['do'] == 'new') {
	$_SESSION['hangman_word'] = '';
	$_SESSION['hangman_used_letters'] = '';
}
$Buchstaben = array ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','Ä','Ö','Ü','ß');
if (isset($_GET['b'])) {
	$_SESSION['hangman_used_letters'] .= strtolower(rawurldecode($_GET['b'])).'-';
}
$BenutzeBuchstaben = explode("-",$_SESSION['hangman_used_letters']);
echo '<p align="center">'."\n";
foreach ($Buchstaben as $Buchstabe) {
	if (in_array(strtolower($Buchstabe),$BenutzeBuchstaben)) {
		echo '&nbsp;<span style="text-decoration:line-through">'.$Buchstabe.'</span>'."\n";
	} else {
		echo '&nbsp;<a href="'.$URL_hangman.'&b='.rawurlencode($Buchstabe).'">'.$Buchstabe.'</a>'."\n";
	}
}
echo '</p>'."\n";
if (empty($_SESSION['hangman_word'])) {
	$WordsData = fopen("txt/hangman/Words.txt", "r");
	$Word = fgetcsv($WordsData,1000);
	while ($Word) {
		$Words[] = $Word[0];
		$Word = fgetcsv($WordsData,1000);
	}
	mt_srand ((double)microtime () * 1000000 );
	$WordNr = mt_rand(0,count($Words)-1);
	$_SESSION['hangman_word'] = $Words[$WordNr];
}
$Word = $_SESSION['hangman_word'];
echo '<p align="center">'."\n";
for ($i = 0, $x = 0; $i < strlen($Word); $i++) {
	$AktuellerBuchstabe = substr($Word,$i,1);
	if (in_array(strtolower($AktuellerBuchstabe),$BenutzeBuchstaben)) {
		$x++;
	} else {
		unset($AktuellerBuchstabe);
	}
	echo '<input type="text" readonly="readonly" value="'.$AktuellerBuchstabe.'" / style="width:10px;">'."\n";
	if ($x == strlen($Word)) $Gewonnen = true;
}
echo '</p>'."\n";
echo '<p align="center">'."\n";
echo '<a href="'.$URL_hangman.'&do=new">Neues Spiel Starten</a>'."\n";
echo '</p>'."\n";
?>
Ich bin dabei Hangman zu programmieren. Jetzt brauche ich dazu die Funktion Strlen. Aber Strlen aus Umlauten und ß ergibt 2 statt 1. Dadurch funktioniert wahrscheinlich alles Nicht. Oder habe ich woanders einen Fehler den ich nicht erkenne?
Hoffe das ihr mir weiterhelfen könnt

[edit]
Umlautfreie Wörter funktionieren, Programm is halt noch nicht fertig, aber alle Felder werden ausgeüllt:
Christian Gollhardt: Die Webseite &rArr; Hangman
 
Hallo,

alle Zeichen oberhalb 7fh werden in PHP als multibyte behandelt. Meine Empfehlung ist die Verwendung von mb_strlen ... alternativ kann man versuchen, per mb_internal_encoding sich einen geigneten Zeichensatz einzustellen.

Gruß,
Jumper, the II.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben