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

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

davy

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

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

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

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

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

dandandan

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

davy

Участник
Регистрация
19 Июл 2009
Сообщения
163
Реакции
9
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 код, который на странице бы отображал рабочую ссылку.
 

dandandan

Мой дом здесь!
Регистрация
7 Авг 2008
Сообщения
1.033
Реакции
284
Если ничего не путаю, то видимо эта.
string urldecode ( string str )
Decodes any %## encoding in the given string. The decoded string is returned.
 

davy

Участник
Регистрация
19 Июл 2009
Сообщения
163
Реакции
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;

и соответственно ссылка не отображается.
 

dandandan

Мой дом здесь!
Регистрация
7 Авг 2008
Сообщения
1.033
Реакции
284
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

davy

Участник
Регистрация
19 Июл 2009
Сообщения
163
Реакции
9
dandandan, второй вариант как раз то что нужно! Спасибо!

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