mirror of
https://github.com/php/doc-ru.git
synced 2025-07-28 06:39:58 +00:00
Обновление до английской версии
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: cdc9d28d334bbc08386fecf8aade66080004a9dd Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 6dd0689d9143fa9a06dcbbf03688cd739a8a6219 Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<book xml:id="mongodb.architecture" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<titleabbrev>Архитектура и внутреннее устройство драйвера</titleabbrev>
|
||||
@ -674,6 +674,24 @@ class UpperClass implements MongoDB\BSON\Persistable {
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><literal>"bson"</literal></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Превращает BSON массив в <classname>MongoDB\BSON\PackedArray</classname>
|
||||
и BSON документ в <classname>MongoDB\BSON\Document</classname>,
|
||||
независимо от того, есть ли у BSON документа свойство <property>__pclass</property>
|
||||
<footnoteref linkend="mongodb.pclass"/>.
|
||||
</para>
|
||||
<note>
|
||||
<simpara>
|
||||
Значение <literal>bson</literal> доступно только для трёх корневых типов,
|
||||
но не в отображениях для конкретных полей.
|
||||
</simpara>
|
||||
</note>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>любая другая строка</term>
|
||||
<listitem>
|
||||
@ -718,7 +736,9 @@ class UpperClass implements MongoDB\BSON\Persistable {
|
||||
<methodname>MongoDB\Driver\Cursor::setTypeMap</methodname> для объекта
|
||||
<classname>MongoDB\Driver\Cursor</classname> или аргумента
|
||||
<literal>$typeMap</literal> в
|
||||
<function>MongoDB\BSON\toPHP</function>. Каждый из трёх
|
||||
<function>MongoDB\BSON\toPHP</function>,
|
||||
<methodname>MongoDB\BSON\Document::toPHP</methodname> и
|
||||
<methodname>MongoDB\BSON\PackedArray::toPHP</methodname>. Каждый из трёх
|
||||
классов (<emphasis>root</emphasis>, <emphasis>document</emphasis>, и
|
||||
<emphasis>array</emphasis>) может быть задан индивидуально, в дополнение
|
||||
к типам полей.
|
||||
|
@ -1,29 +1,74 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 4691215483797da841e61de00eef8adba2960d21 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: 52c3812df42c03188138c6930e49ecd7188f0e86 Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="mongodb-bson-int64.construct" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refnamediv>
|
||||
<refname>MongoDB\BSON\Int64::__construct</refname>
|
||||
<refpurpose>Создаёт новый Int64 (не используется)</refpurpose>
|
||||
<refpurpose>Создаёт новый Int64</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsect1 role="description">
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<modifier>final</modifier> <modifier>private</modifier> <methodname>MongoDB\BSON\Int64::__construct</methodname>
|
||||
<void/>
|
||||
<modifier>final</modifier> <modifier>public</modifier> <methodname>MongoDB\BSON\Int64::__construct</methodname>
|
||||
<methodparam><type class="union"><type>int</type><type>string</type></type><parameter>value</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<classname>MongoDB\BSON\Int64</classname> объекты создаются путём
|
||||
преобразования из 64-разрядного целочисленного типа BSON на 32-разрядной платформе и не могут быть
|
||||
созданы напрямую.
|
||||
Создаёт новый экземпляр <classname>MongoDB\BSON\Int64</classname>
|
||||
для заданного целого числа.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="parameters">
|
||||
&reftitle.parameters;
|
||||
&no.function.parameters;
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><parameter>value</parameter> (<type class="union"><type>int</type><type>string</type></type>)</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Значение, присваиваемое экземпляру <classname>Int64</classname>.
|
||||
Это значение может быть предоставлено как целое число (<type>int</type>) или строка (<type>string</type>),
|
||||
последнее требуется на 32-битных платформах для представления 64-битных значений.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="changelog">
|
||||
&reftitle.changelog;
|
||||
<para>
|
||||
<informaltable>
|
||||
<tgroup cols="2">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>&Version;</entry>
|
||||
<entry>&Description;</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>PECL mongodb 1.16.0</entry>
|
||||
<entry>
|
||||
<para>
|
||||
Метод стал доступен для поддержки создания экземпляров Int64
|
||||
при работе с необработанным BSON.
|
||||
</para>
|
||||
</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</informaltable>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="errors">
|
||||
&reftitle.errors;
|
||||
<simplelist>
|
||||
&mongodb.throws.argumentparsing;
|
||||
<member>Выбрасывает исключение <classname>MongoDB\Driver\Exception\InvalidArgumentException</classname>,
|
||||
если строка <parameter>value</parameter> не может быть разобрана как 64-битное целое число.</member>
|
||||
</simplelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="seealso">
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: deb6ee36001e5d315c92780db3a6cf64fe4f70bf Maintainer: shein Status: ready -->
|
||||
<!-- EN-Revision: 665c1d6da54067f8dcd5eb1a292aa03f5bc0e2d4 Maintainer: shein Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<refentry xml:id="ocilob.read" xmlns="http://docbook.org/ns/docbook">
|
||||
<refnamediv>
|
||||
@ -14,14 +14,13 @@
|
||||
<methodparam><type>int</type><parameter>length</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
Читает и возвращает <parameter>length</parameter> байт данных с текущей
|
||||
позиции объекта LOB.
|
||||
Читает <parameter>length</parameter> байтов (BLOB) или символов (CLOB)
|
||||
с текущей позиции объекта LOB.
|
||||
</para>
|
||||
<para>
|
||||
Чтение останавливается, если длина прочтённых данных равна
|
||||
<parameter>length</parameter> или если достигнут конец объекта.
|
||||
Внутренний указатель перемещается на столько байт, сколько было
|
||||
прочитано.
|
||||
Чтение останавливается, когда прочитано <parameter>length</parameter> байтов для BLOB,
|
||||
<parameter>length</parameter> символов для CLOB или когда достигнут конец объекта.
|
||||
Внутренний указатель объекта будет сдвинут на количество прочитанных байт/символов.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
@ -33,7 +32,8 @@
|
||||
<term><parameter>length</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Длина считываемых данных, в байтах. Большие значения округляются вниз до 1 MB.
|
||||
Длина считываемых данных, в байтах (BLOB) или символах (CLOB).
|
||||
Большие значения округляются вниз до 1 MB.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: d4d537e6a2a9e11b24d5a42e8be7b2d4763c3f0e Maintainer: mch Status: ready -->
|
||||
<!-- EN-Revision: 968c2bc60de3e93d7f38be0b9d2d1b9685a16ea7 Maintainer: mch Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<section xml:id="pdo-mysql.constants" xmlns="http://docbook.org/ns/docbook">
|
||||
&reftitle.constants;
|
||||
@ -8,26 +8,27 @@
|
||||
<varlistentry xml:id="pdo.constants.mysql-attr-use-buffered-query">
|
||||
<term>
|
||||
<constant>PDO::MYSQL_ATTR_USE_BUFFERED_QUERY</constant>
|
||||
(<type>int</type>)
|
||||
(<type>bool</type>)
|
||||
</term>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Если этот атрибут установлен в &true; в
|
||||
<classname>PDOStatement</classname>, MySQL-драйвер
|
||||
будет использовать буферизованные версии API MySQL.
|
||||
Если вы пишете переносимый на другие библиотеки код,
|
||||
вы должны использовать <function>PDOStatement::fetchAll</function>.
|
||||
По умолчанию все запросы выполняются
|
||||
в <link linkend="mysqlinfo.concepts.buffering">буферизованном режиме</link>.
|
||||
Если этот атрибут установлен в значение &false;
|
||||
для объекта <classname>PDO</classname>,
|
||||
драйвер MySQL будет использовать небуферизованный режим.
|
||||
</simpara>
|
||||
<para>
|
||||
<example><title>Буферизация запросов в MySQL</title>
|
||||
<example><title>Установка небуферизованного режима MySQL</title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
|
||||
$stmt = $db->prepare('select * from foo',
|
||||
array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true));
|
||||
} else {
|
||||
die("приложение работает только с mysql; Следует использовать \$stmt->fetchAll() вместо этого");
|
||||
$pdo = new PDO("mysql:host=localhost;dbname=world", 'my_user', 'my_password');
|
||||
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
|
||||
|
||||
$unbufferedResult = $pdo->query("SELECT Name FROM City");
|
||||
foreach ($unbufferedResult as $row) {
|
||||
echo $row['Name'] . PHP_EOL;
|
||||
}
|
||||
?>
|
||||
]]>
|
||||
|
@ -1,14 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 184f3f7bd45643cb80f828d0bb001991ec3a5fad Maintainer: rjhdby Status: ready -->
|
||||
<!-- EN-Revision: ccb379494533c9b7d63a81f0221231a9e526eee9 Maintainer: rjhdby Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<chapter xml:id="session.security" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Безопасность сессий</title>
|
||||
<para>
|
||||
Внешние ссылки: <link xlink:href="&url.session-fixation;">Атака "Фиксация сессии"</link>
|
||||
</para>
|
||||
<para>
|
||||
Работа с HTTP-сессиями является основой веб-безопасности. Должны быть применены
|
||||
Работа с HTTP-сессиями является основой веб-безопасности. <emphasis>Должны</emphasis> быть применены
|
||||
все возможные меры для обеспечения безопасности сессии. Разработчик должен включать и
|
||||
использовать соответствующие настройки соответствующим образом.
|
||||
</para>
|
||||
@ -31,7 +30,7 @@
|
||||
приводят к ухудшению удобства для конечного пользователя.
|
||||
Например, если необходимо защитить пользователя от
|
||||
простейших методов социальной инженерии, следует включить
|
||||
<literal>session.use_only_cookies</literal>. В данном случае со стороны
|
||||
<link linkend="ini.session.use-only-cookies">session.use_only_cookies</link>. В данном случае со стороны
|
||||
пользовательского ПО обязательна поддержка cookie, иначе механизм сессий не
|
||||
будет работать.
|
||||
</para>
|
||||
@ -149,7 +148,8 @@
|
||||
|
||||
<note>
|
||||
<simpara>
|
||||
В версиях PHP до 7.1.0 необходимо использовать CSPRNG, то есть /dev/urandom или
|
||||
В версиях PHP до 7.1.0 <emphasis>необходимо</emphasis> использовать <acronym>CSPRNG</acronym>,
|
||||
например, <filename>/dev/urandom</filename> или
|
||||
<function>random_bytes</function> и функции хеширования для генерации
|
||||
нового идентификатора сессии. <function>session_create_id</function> имеет
|
||||
встроенная функциональность обнаружения коллизий и генерирует идентификатор
|
||||
@ -182,7 +182,7 @@
|
||||
Идентификатор сессии <emphasis>должен</emphasis> пересоздаваться при
|
||||
повышении привилегий пользователя, например при аутентификации.
|
||||
Функция <function>session_regenerate_id</function> должна вызываться до записи
|
||||
авторизационной информации в $_SESSION.
|
||||
авторизационной информации в <varname>$_SESSION</varname>.
|
||||
(<function>session_regenerate_id</function> сохраняет данные текущей сессии
|
||||
автоматически). Убедитесь, что только текущая сессия отмечена как
|
||||
авторизованная.
|
||||
@ -209,8 +209,8 @@
|
||||
старых сессий сохраняются до момента запуска сборщика мусора.
|
||||
В то же время, разработчики должны убедиться, что данные
|
||||
истёкших сессий удалены. Однако разработчики НЕ должны удалять данные активных сессий немедленно.
|
||||
Например, никогда не вызывайте <literal>session_regenerate_id(true);</literal>
|
||||
и <function> session_destroy</function> совместно для активных сессий.
|
||||
Например, никогда не вызывайте <code>session_regenerate_id(true);</code>
|
||||
и <function>session_destroy</function> совместно для активных сессий.
|
||||
Это может показаться противоречивым, но это обязательное требование.
|
||||
</simpara>
|
||||
</warning>
|
||||
@ -236,7 +236,7 @@
|
||||
<simpara>
|
||||
Вместо немедленного удаления старых сессий вы должны сохранять их
|
||||
непродолжительное время, например, установив специальный флаг и
|
||||
время окончательного истечения сессии в $_SESSION, запретив
|
||||
время окончательного истечения сессии в <varname>$_SESSION</varname>, запретив
|
||||
кому-либо обращаться к этим данным.
|
||||
</simpara>
|
||||
<simpara>
|
||||
@ -264,9 +264,9 @@
|
||||
|
||||
<warning>
|
||||
<simpara>
|
||||
Не недооценивайте риск DoS. <literal>use_strict_mode=On</literal>
|
||||
Не недооценивайте риск DoS. <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link>=On
|
||||
обязателен для общей безопасности идентификаторов сессий!
|
||||
Все сайты должны использовать <literal>use_strict_mode</literal>.
|
||||
Все сайты должны использовать <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link>.
|
||||
</simpara>
|
||||
<simpara>
|
||||
DoS (отказ в обслуживании) может произойти только тогда, когда аккаунт
|
||||
@ -339,7 +339,7 @@
|
||||
Для уменьшения риска DoS с использованием блокировки сессий, минимизируйте их.
|
||||
Используйте блокировку "read only", когда сессию не нужно обновлять.
|
||||
Используйте опцию 'read_and_close' с <function>session_start</function>.
|
||||
<literal>session_start(['read_and_close'=>1]);</literal>
|
||||
<code>session_start(['read_and_close'=>1]);</code>
|
||||
Закрывайте сессию с помощью <function>session_commit</function> сразу, как только
|
||||
вы закончили обновлять $_SESSION.
|
||||
</para>
|
||||
@ -415,7 +415,7 @@
|
||||
в качестве ключей автологина с помощью <function>setcookie</function>.
|
||||
Используйте безопасное хеширование, посильнее чем SHA-2, например
|
||||
SHA-256 или выше со случайными данными из <function>random_bytes</function>
|
||||
или /dev/urandom.
|
||||
или <filename>/dev/urandom</filename>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
@ -515,9 +515,9 @@
|
||||
"cookie". Большинство приложений должны использовать cookie для идентификатора сессии.
|
||||
</para>
|
||||
<para>
|
||||
Если <literal>session.use_only_cookies</literal>=Off,
|
||||
Если <link linkend="ini.session.use-only-cookies">session.use_only_cookies</link>=Off,
|
||||
модуль сессии будет использовать идентификатор, установленный
|
||||
через GET/POST/URL, если "cookie" не была выставлена заранее.
|
||||
через GET или POST, если "cookie" не была выставлена заранее.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
@ -527,7 +527,7 @@
|
||||
</para>
|
||||
<para>
|
||||
Крайне рекомендуется включать
|
||||
<literal>session.use_strict_mode</literal>. По умолчанию не включено.
|
||||
<link linkend="ini.session.use-strict-mode">session.use_strict_mode</link>. По умолчанию не включено.
|
||||
</para>
|
||||
<para>
|
||||
Это не позволит сессионному модулю использовать неинициализированные
|
||||
@ -539,7 +539,7 @@
|
||||
Из-за особенностей спецификации cookie, атакующий может сделать
|
||||
cookie с идентификатором сессии неудаляемой с помощью локальной
|
||||
базы cookie или JavaScript-инъекцией.
|
||||
<literal>session.use_strict_mode</literal> может не дать
|
||||
<link linkend="ini.session.use-strict-mode">session.use_strict_mode</link> может не дать
|
||||
атакующему использовать этот идентификатор.
|
||||
</para>
|
||||
<note>
|
||||
@ -548,7 +548,7 @@
|
||||
и выставить его жертве. Они должны будут поддерживать сессию в активном
|
||||
состоянии для злоупотреблений. Атакующим понадобится совершить
|
||||
дополнительные действия для проведения атаки по этому сценарию.
|
||||
Поэтому <literal>session.use_strict_mode</literal>
|
||||
Поэтому <link linkend="ini.session.use-strict-mode">session.use_strict_mode</link>
|
||||
служит как предотвращение этому.
|
||||
</para>
|
||||
</note>
|
||||
@ -610,7 +610,7 @@
|
||||
<link linkend="ini.session.gc-maxlifetime">session.gc_maxlifetime</link>=[выбрать наименьший из возможных]
|
||||
</para>
|
||||
<para>
|
||||
<literal>session.gc_maxlifetime</literal> настройка для удаления устаревших
|
||||
<link linkend="ini.session.gc-maxlifetime">session.gc_maxlifetime</link> настройка для удаления устаревших
|
||||
идентификаторов сессий. Полагаться на эту опцию категорически
|
||||
<emphasis>не</emphasis> рекомендуется.
|
||||
Вы должны управлять жизненным циклом сессии самостоятельно.
|
||||
@ -688,7 +688,7 @@
|
||||
Если <link linkend="ini.session.use-trans-sid">session.use_trans_sid</link>
|
||||
включён, то рекомендуется использовать эту опцию, если это возможно.
|
||||
Это уменьшает риск для инъекции сессионного ID. Если ваш сайт
|
||||
находится по адресу http://example.com/, то установите этой опции значение http://example.com/.
|
||||
находится по адресу <literal>http://example.com/</literal>, то установите этой опции значение <literal>http://example.com/</literal>.
|
||||
Обратите внимание, что при использовании HTTPS, браузер не отправляет
|
||||
referrer заголовок. Таким образом, этот параметр не является достаточно
|
||||
надёжным показателем безопасности, но, всё же, рекомендуется его использовать.
|
||||
@ -702,10 +702,10 @@
|
||||
<para>
|
||||
Убедитесь, что содержимое HTTP не кешируется для аутентификационной сессии.
|
||||
Допускается кешировать только неконфиденциальный контент. Иначе
|
||||
содержимым могут воспользоваться. Можно использовать значение "private",
|
||||
содержимым могут воспользоваться. Можно использовать значение <literal>"private"</literal>,
|
||||
если содержимое HTTP не содержит чувствительные к безопасности данные. Учтите, что
|
||||
"private" может оставлять конфиденциальные данные в общем кеше клиентов.
|
||||
Значение "public" можно использовать только, если HTTP-контент вообще не содержит
|
||||
<literal>"private"</literal> может оставлять конфиденциальные данные в общем кеше клиентов.
|
||||
Значение <literal>"public"</literal> можно использовать только, если HTTP-контент вообще не содержит
|
||||
никаких конфиденциальных данных.
|
||||
</para>
|
||||
</listitem>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: b6f10b97e0d9405144b6100110e935af24161ab6 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: b676d0b9c968ebb0b7429835f2f6bd364275eed1 Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.utf8-decode">
|
||||
<refnamediv>
|
||||
@ -131,6 +131,107 @@ string(1) "?"
|
||||
</example>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="notes">
|
||||
&reftitle.notes;
|
||||
<note>
|
||||
<title>Устаревание и альтернативы</title>
|
||||
<para>
|
||||
Функция <emphasis>устарела</emphasis>, начиная с PHP 8.2.0 и будет удалена в будущей версии.
|
||||
Существующие варианты использования должны быть проверены и заменены подходящими альтернативами.
|
||||
</para>
|
||||
<para>
|
||||
Аналогичной функциональности можно достичь с помощью функции <function>mb_convert_encoding</function>,
|
||||
которая поддерживает ISO-8859-1 и многие другие кодировки символов.
|
||||
<informalexample>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$utf8_string = "\xC3\xAB"; // 'ë' (e с диерезисом) в UTF-8
|
||||
$iso8859_1_string = mb_convert_encoding($utf8_string, 'ISO-8859-1', 'UTF-8');
|
||||
echo bin2hex($iso8859_1_string), "\n";
|
||||
|
||||
$utf8_string = "\xCE\xBB"; // 'λ' (Греческая строчная лямбда) в UTF-8
|
||||
$iso8859_7_string = mb_convert_encoding($utf8_string, 'ISO-8859-7', 'UTF-8');
|
||||
echo bin2hex($iso8859_7_string), "\n";
|
||||
|
||||
$utf8_string = "\xE2\x82\xAC"; // '€' (Символ евро) в UTF-8 (отсутствует в ISO-8859-1)
|
||||
$windows_1252_string = mb_convert_encoding($utf8_string, 'Windows-1252', 'UTF-8');
|
||||
echo bin2hex($windows_1252_string), "\n";
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
eb
|
||||
eb
|
||||
80
|
||||
]]>
|
||||
</screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
<para>
|
||||
Другие опции, которые могут быть доступны в зависимости от установленных модулей:
|
||||
<methodname>UConverter::transcode</methodname> и <function>iconv</function>.
|
||||
</para>
|
||||
<para>
|
||||
Все следующие варианты дают один и тот же результат:
|
||||
<informalexample>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$utf8_string = "\x5A\x6F\xC3\xAB"; // 'Zoë' в UTF-8
|
||||
$iso8859_1_string = utf8_decode($utf8_string);
|
||||
echo bin2hex($iso8859_1_string), "\n";
|
||||
|
||||
$iso8859_1_string = mb_convert_encoding($utf8_string, 'ISO-8859-1', 'UTF-8');
|
||||
echo bin2hex($iso8859_1_string), "\n";
|
||||
|
||||
$iso8859_1_string = iconv('UTF-8', 'ISO-8859-1', $utf8_string);
|
||||
echo bin2hex($iso8859_1_string), "\n";
|
||||
|
||||
$iso8859_1_string = UConverter::transcode($utf8_string, 'ISO-8859-1', 'UTF8');
|
||||
echo bin2hex($iso8859_1_string), "\n";
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
5a6feb
|
||||
5a6feb
|
||||
5a6feb
|
||||
5a6feb
|
||||
]]>
|
||||
</screen>
|
||||
</informalexample>
|
||||
Указание <literal>'?'</literal> в качестве опции <literal>'to_subst'</literal>
|
||||
в методе <methodname>UConverter::transcode</methodname> даёт тот же результат,
|
||||
что и функция <function>utf8_decode</function> для строк,
|
||||
которые являются недопустимыми или не могут быть представлены в ISO 8859-1.
|
||||
<informalexample>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$utf8_string = "\xE2\x82\xAC"; // € (Символ евро) отсутствует в ISO-8859-1
|
||||
$iso8859_1_string = UConverter::transcode(
|
||||
$utf8_string, 'ISO-8859-1', 'UTF-8', ['to_subst' => '?']
|
||||
);
|
||||
var_dump($iso8859_1_string);
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
sring(1) "?"
|
||||
]]>
|
||||
</screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
</note>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="seealso">
|
||||
&reftitle.seealso;
|
||||
<para>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: b6f10b97e0d9405144b6100110e935af24161ab6 Maintainer: sergey Status: ready -->
|
||||
<!-- EN-Revision: b676d0b9c968ebb0b7429835f2f6bd364275eed1 Maintainer: sergey Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.utf8-encode">
|
||||
<refnamediv>
|
||||
@ -122,6 +122,85 @@ echo bin2hex($utf8_string), "\n";
|
||||
</example>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="notes">
|
||||
&reftitle.notes;
|
||||
<note>
|
||||
<title>Устаревание и альтернативы</title>
|
||||
<para>
|
||||
Функция <emphasis>устарела</emphasis>, начиная с PHP 8.2.0 и будет удалена в будущей версии.
|
||||
Существующие варианты использования должны быть проверены и заменены подходящими альтернативами.
|
||||
</para>
|
||||
<para>
|
||||
Аналогичной функциональности можно достичь с помощью функции <function>mb_convert_encoding</function>,
|
||||
которая поддерживает ISO-8859-1 и многие другие кодировки символов.
|
||||
<informalexample>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$iso8859_1_string = "\xEB"; // 'ë' (e с диерезисом) в UTF-8
|
||||
$utf8_string = mb_convert_encoding($iso8859_1_string, 'UTF-8', 'ISO-8859-1');
|
||||
echo bin2hex($utf8_string), "\n";
|
||||
|
||||
$iso8859_7_string = "\xEB"; // та же строка в ISO-8859-7 представляет собой 'λ' (греческая строчная лямбда)
|
||||
$utf8_string = mb_convert_encoding($iso8859_7_string, 'UTF-8', 'ISO-8859-7');
|
||||
echo bin2hex($utf8_string), "\n";
|
||||
|
||||
$windows_1252_string = "\x80"; // '€' (Знак евро) в Windows-1252, но не в ISO-8859-1
|
||||
$utf8_string = mb_convert_encoding($windows_1252_string, 'UTF-8', 'Windows-1252');
|
||||
echo bin2hex($utf8_string), "\n";
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
c3ab
|
||||
cebb
|
||||
e282ac
|
||||
]]>
|
||||
</screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
<para>
|
||||
Другие опции, которые могут быть доступны в зависимости от установленных модулей:
|
||||
<methodname>UConverter::transcode</methodname> и <function>iconv</function>.
|
||||
</para>
|
||||
<para>
|
||||
Все следующие варианты дают один и тот же результат:
|
||||
<informalexample>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$iso8859_1_string = "\x5A\x6F\xEB"; // 'Zoë' в ISO-8859-1
|
||||
|
||||
$utf8_string = utf8_encode($iso8859_1_string);
|
||||
echo bin2hex($utf8_string), "\n";
|
||||
|
||||
$utf8_string = mb_convert_encoding($iso8859_1_string, 'UTF-8', 'ISO-8859-1');
|
||||
echo bin2hex($utf8_string), "\n";
|
||||
|
||||
$utf8_string = UConverter::transcode($iso8859_1_string, 'UTF8', 'ISO-8859-1');
|
||||
echo bin2hex($utf8_string), "\n";
|
||||
|
||||
$utf8_string = iconv('ISO-8859-1', 'UTF-8', $iso8859_1_string);
|
||||
echo bin2hex($utf8_string), "\n";
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
5a6fc3ab
|
||||
5a6fc3ab
|
||||
5a6fc3ab
|
||||
5a6fc3ab
|
||||
]]>
|
||||
</screen>
|
||||
</informalexample>
|
||||
</para>
|
||||
</note>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="seealso">
|
||||
&reftitle.seealso;
|
||||
<para>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- EN-Revision: 0c9c2dd669fe9395eaa73d487fbd160f9057429a Maintainer: aur Status: ready -->
|
||||
<!-- EN-Revision: 767338231c3e14c7be5399b8e2e0c3b60f7ae8dd Maintainer: aur Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
<refentry xml:id="function.urlencode" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refnamediv>
|
||||
@ -58,10 +58,19 @@
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$userinput = 'Data123!@-_ +';
|
||||
echo "Пользовательские данные: $userinput\n";
|
||||
echo '<a href="mycgi?foo=', urlencode($userinput), '">';
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen role="html">
|
||||
<![CDATA[
|
||||
Пользовательские данные: Data123!@-_ +
|
||||
<a href="mycgi?foo=Data123%21%40-_+%2B">
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
</para>
|
||||
<para>
|
||||
@ -70,11 +79,23 @@ echo '<a href="mycgi?foo=', urlencode($userinput), '">';
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$foo = 'Data123!@-_ +';
|
||||
$bar = "Содержимое, отличное от $foo";
|
||||
echo "foo: $foo\n";
|
||||
echo "bar: $bar\n";
|
||||
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
|
||||
echo '<a href="mycgi?' . htmlentities($query_string) . '">';
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen role="html">
|
||||
<![CDATA[
|
||||
foo: Data123!@-_ +
|
||||
bar: Содержимое, отличное от Data123!@-_ +
|
||||
<a href="mycgi?foo=Data123%21%40-_+%2B&bar=Not+the+same+content+as+Data123%21%40-_+%2B">
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
Reference in New Issue
Block a user