Неверная работа со строками.

white phoenix

Новичок
Неверная работа со строками.

Вот такой бред происходит.

PHP/5.0.4 (Win32):
PHP:
function myutf_decode($text="")
{
 $old = "eooeaiaoucououaai?iea?yy?nieoua?.?EOOEAIAOUCOUOUAAI?IEA?Y??NIEOUA?,?";
 $new = "йцукенгшщзхъфывапролджэячсмитьбю.ёЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,Ё";
 $text = $old;
 $text = strtr($text,$old,$new);
 var_dump(strlen($old) == strlen($new)); // bool(true)
 var_dump($text == $new); // bool(false)
 return $text;
}
myutf_decode();
 

SiMM

Новичок
И где здесь
> Неверная работа со строками
?
Из равенства длин строк и не должно исходить равенство самих строк.
[m]strtr[/m]
 

white phoenix

Новичок
Более наглядный пример:
PHP:
function myutf_decode($text="")
{
 $old = "eooeaiaoucououaai?iea?yy?nieoua?.?EOOEAIAOUCOUOUAAI?IEA?Y??NIEOUA?,?";
 $new = "йцукенгшщзхъфывапролджэячсмитьбю.ёЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,Ё";
 $search = array();
 $replace = array();
 
 //$old = "fuck";
 //$new = "shit";
 
 $text = $old;
 
 for($i=0;$i<strlen($old);$i++)
 {
  $search[] = $old[$i];
  $replace[] = $new[$i];
 }
 $text = str_replace($search,$replace,$text);
 var_dump(strlen($old) == strlen($new)); // bool(true) 
 var_dump($text == $new); // bool(false)
 return $text;
}
myutf_decode();
Если убрать комментарий с
PHP:
 //$old = "fuck";
 //$new = "shit";
то для этих значений код будет работать верно. подскажите в чем причина, честно говоря я очень устал за день и по-этому смекалка ниже паркета.
 

Profic

just Profic (PHP5 BetaTeam)
$text = $new;
и не париться.
Неужто не понятно, что из набора повторяющихся символов крайне сложно найти тот единственный, который был там до обрезания умляутов при предствалении текста cp1251 в iso-8859-1? Из всей этой строки уникальными символами являются только 'eoaiuc?yn.EOAIUCYN,'.
 
Сверху