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

Статус
В этой теме нельзя размещать новые ответы.

davy

Участник
Регистрация
19 Июл 2009
Сообщения
163
Реакции
9
Доброго времени суток!

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

Код:
require_once('название_файла');

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

Не знаю, где и как это надо делать в ява скрипте или уже в php документе. Буду признателен за помощь!
 
PHP:
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
В результате в html документе будут показаны именно теги.
 
PHP:
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
В результате в html документе будут показаны именно теги.

Спасибо за ответ! Я наверное не правильно описал суть вопроса. Вышеприведенная функция будет возвращать в 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 код, который на странице бы отображал рабочую ссылку.
 
Если ничего не путаю, то видимо эта.
string urldecode ( string str )
Decodes any %## encoding in the given string. The decoded string is returned.
 
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;

и соответственно ссылка не отображается.
 
PHP:
<?php
function utf8RawUrlDecode ($source) {
$decodedStr = '';
$pos = 0;
$len = strlen ($source);
while ($pos < $len) {
$charAt = substr ($source, $pos, 1);
if ($charAt == '%') {
$pos++;
$charAt = substr ($source, $pos, 1);
if ($charAt == 'u') {
// we got a unicode character
$pos++;
$unicodeHexVal = substr ($source, $pos, 4);
$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, $pos, 2);
$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
dandandan, второй вариант как раз то что нужно! Спасибо!

chibit, тоже спасибо, но для моей задачи подошла эта функция Для просмотра ссылки Войди или Зарегистрируйся Но при ее использовании русские символы вставлялись в html документ все в том же ASCI, что в прочем не мешало им правильно обрабатываться браузером. А вариант, предложенный dandandan работает как надо!
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху