Трудности с Function

Discussion in 'PHP' started by Seganapa, 19 Jul 2012.

  1. Seganapa

    Seganapa New Member

    Joined:
    8 Jun 2012
    Messages:
    74
    Likes Received:
    0
    Reputations:
    0
    Всем привет!

    Чет не получается создать функцию для перекодирования кириллицы...

    PHP:
    preg_replace('#\\\\u([0-9a-f]{4})#se','iconv("UTF-16BE","UTF-8",pack("H4","$1"))',$...)
    Переменных $... может быть N кол-во...

    Например:
    Вот так все работает
    PHP:
    echo preg_replace('#\\\\u([0-9a-f]{4})#se','iconv("UTF-16BE","UTF-8",pack("H4","$1"))',('\u041f\u0441\u0430\u0439\u043d\u044d\u0439\u0440\u043e'));
    А так нет
    PHP:
    <?
    header('Content-Type: Text/html; charset=utf-8');
    function 
    cod($c)
    {
    preg_replace('#\\\\u([0-9a-f]{4})#se','iconv("UTF-16BE","UTF-8",pack("H4","$1"))',$c);
    }
    print (
    cod('\u041f\u0441\u0430\u0439\u043d\u044d\u0439\u0440\u043e'));
    ?>
     
    #1 Seganapa, 19 Jul 2012
    Last edited: 19 Jul 2012
  2. Seganapa

    Seganapa New Member

    Joined:
    8 Jun 2012
    Messages:
    74
    Likes Received:
    0
    Reputations:
    0
    PHP:
    header('Content-Type: Text/html; charset=utf-8');
    $a "\\u041f\\u0441\\u0430\\u0439\\u043d\\u044d\\u0439\\u0440\\u043e";
    $b "\\u0420\\u043e\\u0434\\u0440\\u044d\\u0439\\u043d\\u044d\\u0439\\u043a\\u0438";

    function 
    cod($c)
    {
    echo 
    preg_replace('#\\\\u([0-9a-f]{4})#se','iconv("UTF-16BE","UTF-8",pack("H4","$1"))',$c);
    }
    echo 
    $a.' - '.cod($b);
    На выходе получаю:
    PHP:
    Родрэйнэйки\u041f\u0441\u0430\u0439\u043d\u044d\u0439\u0440\u043e -
    А нужно:
    PHP:
    \u041f\u0441\u0430\u0439\u043d\u044d\u0439\u0440\u043e Родрэйнэйки
    Как правильно сделать, почему при выводе на первое место ставиться вывод из функции?
     
    #2 Seganapa, 19 Jul 2012
    Last edited: 19 Jul 2012
  3. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    809
    Reputations:
    231
    Курить надо прекращать. Второй пример из первого поста не работал, т.к. в функции return отсутствует.
    Пример из второго поста криво работает из-за двойного echo.
     
    _________________________
  4. Seganapa

    Seganapa New Member

    Joined:
    8 Jun 2012
    Messages:
    74
    Likes Received:
    0
    Reputations:
    0
    точно, return...

    Бросаю курить...)))