Форум → Программирование → PHP для идиотов → Кодировка
Кодировка
-
Привет пыховцам
Есть страничка php, в ней форма, в форме поле title.
В поле title ввожу пирожок, жму сабмит, акшн на другую страничку и на ней echo $_POST['title'] пишет пирожок, НО если смотреть strlen($_POST['title']) то оно не 7 а 14 - почему?
если делаю utf8_decode($_POST['title']) то strlen нормально считает но тогда echo $_POST['title'] будет ???????
всю голову сломал, перепробывал кодировки - ниче не работает. -
Окт. 30, 2010, 2:28 д.п., спустя 37 минут 3 секунды
Как вариант вот:iconv_strlen(($_POST['title'],'UTF-8');
-
-
Окт. 30, 2010, 2:34 д.п., спустя 5 секунд
благодарствую.
тут еще одна проблема нарисовалась
надо мне показать первый чар строки. делаю так:
echo substr($_POST['title'], 0, 1);
или так
echo $_POST['title'][0];
выводит ?
как это починить? пробовал на страничке кодировку менять. не помогает. -
-
-
Окт. 30, 2010, 2:54 д.п., спустя 8 минут 47 секунд
есче вопрос
если mb_substr($_POST['title'], 0, 1, 'UTF-8') не заглавная то ее надо сделать заглавной.
попробовал mb_strtoupper, strtoupper, ucfirst - не работает. -
Окт. 30, 2010, 3:07 д.п., спустя 12 минут 36 секунд
нашел вот такой класс. вроде работает.
class string{
function strToUp($lo){
$up=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"
);
return strtr($lo, $up);
}
function strToLower($up){
$lo=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"
);
return strtr($up, $lo);
}
function firstToUp($lo){
if (preg_match("/^([a-zA-Zа-яА-Я]{1})(.*)$/", $lo, $fl)){
$up=$this->strToUp($fl[1]).$fl[2];
}
else{
$up=$lo;
}
return $up;
}
} -
Ноя. 1, 2010, 4:42 п.п., спустя 2 дня 14 часов 34 минуты
А не пробовал<form accept-charset="UTF-8"></form>
?Спустя 123 сек.function my_ucfirst($string, $e ='utf-8') {
if (function_exists('mb_strtoupper') && function_exists('mb_substr') && !empty($string)) {
$string = mb_strtolower($string, $e);
$upper = mb_strtoupper($string, $e);
preg_match('#(.)#us', $upper, $matches);
$string = $matches[1] . mb_substr($string, 1, mb_strlen($string, $e), $e);
}
else {
$string = ucfirst($string);
}
return $string;
}
function sentence_case($string) {
$sentences = preg_split('/([.?!]+)/', $string, -1, PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
$new_string = '';
foreach ($sentences as $key => $sentence) {
$new_string .= ($key & 1) == 0?
my_ucfirst(strtolower(trim($sentence))) :
$sentence.' ';
}
return trim($new_string);
} -
Ноя. 2, 2010, 12:58 д.п., спустя 8 часов 15 минут 46 секунд
sen4ik,mb_strtoupper(mb_substr($str, 0, 1)) . mb_substr($str, 1);
? -
-
Ноя. 2, 2010, 2:17 д.п., спустя 1 час 12 минут 15 секунд
спасибо всем, ужо все сделал. работает - так что трогать не буду. -
Ноя. 2, 2010, 7:28 д.п., спустя 5 часов 10 минут 47 секунд
sen4ik, так ты не трогай. Просто проверь ;)
Пожалуйста, авторизуйтесь, чтобы написать комментарий!