Преобразование ASCI в обычные символы

Тема в разделе "FAQ", создана пользователем davy, 22 ноя 2011.

Статус темы:
Закрыта.
  1. davy

    davy

    Регистр.:
    19 июл 2009
    Сообщения:
    162
    Симпатии:
    9
    Доброго времени суток!

    Ситуация такая, есть файл с яваскриптом, который генерирует текст в ASCI (вила 115!110! итд) затем результат его работы вставляется в основной php документ:

    Код:
    require_once('название_файла');
    Надо чтобы аски код преобразовывался в обычный (чтобы html-теги вставлялись тегами, а не символьным кодом и , соотвественно компилировались).

    Не знаю, где и как это надо делать в ява скрипте или уже в php документе. Буду признателен за помощь!
     
  2. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    PHP:
    $new htmlspecialchars("<a href='test'>Test</a>"ENT_QUOTES);
    echo 
    $new// &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
    В результате в html документе будут показаны именно теги.
     
  3. davy

    davy

    Регистр.:
    19 июл 2009
    Сообщения:
    162
    Симпатии:
    9
    Спасибо за ответ! Я наверное не правильно описал суть вопроса. Вышеприведенная функция будет возвращать в html-код:

    HTML:
    &lt;a href='test'&gt;Test&lt;/a&gt;
    А выводиться на страничке оно будет в виде:

    Код:
    <a href='test'>Test</a>
    А надо наоборот, чтобы на входе приходило:

    Код:
    &#60;&#97;&#32;&#104;&#114;&#101;&#102;&#61;&#39;&#116;&#101;&#115;&#116;&#39;&#62;&#84;&#101;&#115;&#116;&#60;&#47;&#97;&#62;
    А функция преобразовывала бы эти символы в html код, который на странице бы отображал рабочую ссылку.
     
  4. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Если ничего не путаю, то видимо эта.
    string urldecode ( string str )
    Decodes any %## encoding in the given string. The decoded string is returned.
     
  5. davy

    davy

    Регистр.:
    19 июл 2009
    Сообщения:
    162
    Симпатии:
    9
    PHP:
    <?php $new urldecode("&#60;&#97;&#32;&#104;&#114;&#101;&#102;&#61;&#39;&#116;&#101;&#115;&#116;&#39;&#62;&#84;&#101;&#115;&#116;&#60;&#47;&#97;&#62;");
    echo 
    $new?>
    Такая конструкция формирует все тот же html-код:

    HTML:
    &lt;a href='test'&gt;Test&lt;/a&gt;
    и соответственно ссылка не отображается.
     
  6. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    PHP:
    <?php
    function utf8RawUrlDecode ($source) {
    $decodedStr '';
    $pos 0;
    $len strlen ($source);
    while (
    $pos $len) {
    $charAt substr ($source$pos1);
    if (
    $charAt == '%') {
    $pos++;
    $charAt substr ($source$pos1);
    if (
    $charAt == 'u') {
    // we got a unicode character
    $pos++;
    $unicodeHexVal substr ($source$pos4);
    $unicode hexdec ($unicodeHexVal);
    $entity "&#"$unicode ';';
    $decodedStr .= utf8_Encode ($entity);
    $decodedStr .= chr($unicode-848);
    $pos += 4;
    }
    else {
    // we have an escaped ascii character
    $hexVal substr ($source$pos2);
    $decodedStr .= chr (hexdec ($hexVal));
    $pos += 2;
    }
    }
    else {
    $decodedStr .= $charAt;
    $pos++;
    }
    }
    return 
    $decodedStr;
    }
    ?>
    Второй вариант:
    PHP:

    <?php
    function Unicode2Charset($str$charset 'Windows-1251') { // by SiMM, &#xHHHH; addition by John Profic
    return preg_replace(
    '~&#(?:x([\da-f]+)|(\d+));~ie',
    'iconv("UTF-16LE", $charset, pack("v", "$1" ? hexdec("$1") : "$2"))',
    $str
    );
    }

    // Пример использования
    echo Unicode2Charset('&#1082;&#1088;&#1072;&#1089;&#1085;&#1099;&#1081;') . "\n";
    echo 
    Unicode2Charset('&#x0410;&#x0432;&#x0442;&#x043E;') . "\n";
    ?>
     
    davy нравится это.
  7. chibit

    chibit Life sucks.

    Регистр.:
    4 дек 2007
    Сообщения:
    420
    Симпатии:
    285
    davy нравится это.
  8. davy

    davy

    Регистр.:
    19 июл 2009
    Сообщения:
    162
    Симпатии:
    9
    dandandan, второй вариант как раз то что нужно! Спасибо!

    chibit, тоже спасибо, но для моей задачи подошла эта функция http://www.php.net/manual/ru/function.html-entity-decode.php Но при ее использовании русские символы вставлялись в html документ все в том же ASCI, что в прочем не мешало им правильно обрабатываться браузером. А вариант, предложенный dandandan работает как надо!
     
Статус темы:
Закрыта.