Jump to content
php.lv forumi

strlen & strstr enkodingu problēma


Pentiums

Recommended Posts

Labdien!

Ir te tāds skriptiņš, kas atklāj pareizi uzminētos burtus vārdā, nu līdzīgi kā Lingo spēlītē.

<?php
function lv_strtoupper($str) {
$l=array('a','ā','b','c','č','d','e','ē','f','g','ģ','h','i','ī','j','k','ķ','l','ļ','m','n','ņ','o','p','r','s','š','t','u','ū','v','z','ž','ō','ŗ','x','q','w','y');
$u=array('A','Ā','B','C','Č','D','E','Ē','F','G','Ģ','H','I','Ī','J','K','Ķ','L','Ļ','M','N','Ņ','O','P','R','S','Š','T','U','Ū','V','Z','Ž','Ō','Ŗ','X','Q','W','Y');
return str_replace($l,$u,$str);
}

$atbilde = 'Jānis Riktīgais'; //15 simboli
$mana_atbilde = 'Jānis Riekstiņš';

$word = trim(lv_strtoupper($atbilde));
$all_letters = lv_strtoupper($mana_atbilde).' -+.,;!?%&0123456789';
echo strlen($word); //Jābūt 15
for($x=0; $x < strlen($word); $x++) {
if(strstr($all_letters, $word[$x])) {
	if($word[$x]==" ") {
		$word_line.="  ";
	}
	else {
		$word_line.=$word[$x];
	}
}
else {
	$word_line.='_<font size=1> </font>';
}
}
echo '<br><br>';
echo $word_line;
?>

 

Tātad, uz ANSI viss ir čikiniekā! Bet man tākā vajadzētu to visu iedarbināt uz UTF-8 enkodinga! Tātad problēmas ar garumzīmēm un mīkstinājuma zīmēm, uz utf-8 viņš izskaita ka frāzē ir 17 simboli nevis 15, un ja uz utf-8 es strlen aizstāju ar mb_strlen('...', 'utf-8') un strstr ar mb_strstr('...', 'utf-8') garumzīmju vietā rādas ķeburi bet izskaitīt viņš izskaita ka ir 15!!! :(

 

Gaidīšu jūsu atsauces kā atrisināt šo problēmu.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...