1

Тема: Проблема з виводом кирилиці в php

Всім привіт. Почав вчити php, перші кроки. Вирішив написати простенький код: вводиш речення, а функція міняє букви в словах задом наперед. Знайшов функцію яка все робить, щоправда міняє місцями і самі слова, але мені підійде. strrev. Все вроді супер, але одна проблема, із виводом кирилиці. Викидує крякозябрики. Добавляв кодування в html, не помогло.
Код:

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Заміна слів</title>
 </head>
 <body> 
 <?php
    $line="Слово було завжди";
    $line2=strrev($line);
    echo "$line2";
    ?>
 </body>
</html>

Повторюю, я тільки почав вчити, ще зільоний, так що сільно не судіть :)

Подякували: 221VOLT1

2

Re: Проблема з виводом кирилиці в php

ця функція не працює з кирилицею utf-8, можу написати декілька варіантів "обходу" цього.

3

Re: Проблема з виводом кирилиці в php

Буду щиро вдячний:)

VTrim написав:

ця функція не працює з кирилицею utf-8, можу написати декілька варіантів "обходу" цього.

4

Re: Проблема з виводом кирилиці в php

Найпростішим буде такий,без різних перекодувань та масивів.

$str='привіт';
$out=null;
for($i=mb_strlen($str)-1; $i>=0; $i--)
$out.=$str[$i];
echo $out;
Подякували: 221VOLT1

5

Re: Проблема з виводом кирилиці в php

PHP не підтримує UTF. Вчіть C#.

6

Re: Проблема з виводом кирилиці в php

Один з варіантів — http://kvz.io/blog/2012/10/09/reverse-a … ng-in-php/

Подякували: 221VOLT1

7

Re: Проблема з виводом кирилиці в php

Invader написав:

PHP не підтримує UTF. Вчіть C#.

Інколи mbstring вирішує проблему

8

Re: Проблема з виводом кирилиці в php

Або так..

echo implode(array_reverse(str_split($str)));

9

Re: Проблема з виводом кирилиці в php

VTrim написав:

Найпростішим буде такий,без різних перекодувань та масивів.

$str='привіт';
$out=null;
for($i=mb_strlen($str)-1; $i>=0; $i--)
$out.=$str[$i];
echo $out;

не працює. Та ж фігня.

Post's attachments

Безымянный.png 30.89 kb, 207 downloads since 2015-11-23 

10

Re: Проблема з виводом кирилиці в php

Тоді в файл .htaccess в кореневому каталозі впишіть наступне

AddDefaultCharset UTF-8

11

Re: Проблема з виводом кирилиці в php

VTrim написав:

Тоді в файл .htaccess в кореневому каталозі впишіть наступне

AddDefaultCharset UTF-8

Ні, всерівно те саме:/

12

Re: Проблема з виводом кирилиці в php

Я не знав, що php не може працювати з кирилицею. Скільки сайтів і книжок перелистав - такого ніде не писало!

13 Востаннє редагувалося 0xDADA11C7 (24.11.2015 00:46:24)

Re: Проблема з виводом кирилиці в php

UTF-8 не єдине юнікодне кодування

14

Re: Проблема з виводом кирилиці в php

Варіант VTrim не працює, бо $str[$i] - не символ вашого рядка, а символ розміром у байт.
Ось кілька варіантів, найкоротший:

function utf8_strrev($str){
 preg_match_all('/./us', $str, $ar);
 return implode(array_reverse($ar[0]));
}

15

Re: Проблема з виводом кирилиці в php

koala написав:

Варіант VTrim не працює, бо $str[$i] - не символ вашого рядка, а символ розміром у байт.
Ось кілька варіантів, найкоротший:

function utf8_strrev($str){
 preg_match_all('/./us', $str, $ar);
 return implode(array_reverse($ar[0]));
}

Є ще простіший :)

$str='Привіт';
$out=null;
for($i=mb_strlen($str); $i>=0; $i--)
$out.=mb_substr($str,$i,1);
echo $out;
Подякували: koala, 221VOLT2

16

Re: Проблема з виводом кирилиці в php

а файл хоч в UTF-8 зберігається ?

17

Re: Проблема з виводом кирилиці в php

Пане funivan, відгукніться, будь ласка, в цій темі, бо Ви казали мені, щоб Я не тролив PHP. Ледве стримуюсь, але й самому стало цікаво вирішення даного питання (хоча з cgi той php не потрібен)

18

Re: Проблема з виводом кирилиці в php

function str_split_unicode($str, $l = 0) {
    if ($l > 0) {
        $ret = array();
        $len = mb_strlen($str, "UTF-8");
        for ($i = 0; $i < $len; $i += $l) {
            $ret[] = mb_substr($str, $i, $l, "UTF-8");
        }
        return $ret;
    }
    return preg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
}

$str = 'Привіт';
$array = array_reverse(str_split_unicode($str));

var_dump($array);
Подякували: 221VOLT1

19

Re: Проблема з виводом кирилиці в php

Ще такий варіант

$str = 'Привіт';
$out = iconv('utf-16be','utf-8',strrev(iconv('utf-8','utf-16le',$str)));
echo $out;
Подякували: 221VOLT1

20 Востаннє редагувалося Invader (24.11.2015 13:08:39)

Re: Проблема з виводом кирилиці в php

По тому посиланню що я навів є цілком робоча функція.

<?php
function mb_strrev ($string, $encoding = null) {
    if ($encoding === null) {
        $encoding = mb_detect_encoding($string);
    }

    $length   = mb_strlen($string, $encoding);

    $reversed = '';
    while ($length-- > 0) {
        $reversed .= mb_substr($string, $length, 1, $encoding);
    }

    return $reversed;
}
?>

Я не знав, що php не може працювати з кирилицею. Скільки сайтів і книжок перелистав - такого ніде не писало!

Вони приховують правду.
Master_Sergius, давайте жгітє.