1
0
mirror of https://github.com/php/doc-es.git synced 2026-03-23 23:12:09 +01:00

update EN revision misc mbstring (#201)

This commit is contained in:
Philippe DELENTE
2025-04-01 17:17:30 +02:00
committed by GitHub
parent cc8fcd4cf6
commit 2e3cc5f23e
11 changed files with 845 additions and 849 deletions

View File

@@ -1,27 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: b7a780f8e762e290552b9f79d346f2bcbc272e0c Maintainer: seros Status: ready -->
<!-- EN-Revision: de9c65c91ff1710d8b2d2ec955caea0162679305 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="language.errors.basics" xmlns="http://docbook.org/ns/docbook">
<title>Lo básico</title>
<para>
PHP notifica errores en respuesta a varias condiciones de error internas.
Estas se pueden utilizar para señalar varias condiciones diferentes,
mostrándose y/o registrándose si fuera necesario.
</para>
<para>
Cada error que genera PHP incluye un tipo. Existe una
<link linkend="errorfunc.constants">lista de dichos tipos</link>,
<link linkend="errorfunc.constants">lista de dichos tipos de error</link>,
junto con una breve descripción de su comportamiento y sus posibles
causas.
</para>
<sect2 xml:id="language.errors.basics.handling">
<title>Manejo de errores con PHP</title>
<para>
Si no se establece un manejador de errores, PHP manejará cada error que ocurra
según su configuración. Los errores que se notifican y los que se
@@ -32,18 +32,18 @@
establecer la directiva de configuración, ya que algunos errores pueden ocurrir
antes de comenzar la ejecución de un script.
</para>
<para>
En un entorno de desarrollo debería establecerse siempre
<link linkend="ini.error-reporting"><parameter>error_reporting</parameter></link>
a <constant>E_ALL</constant>, debido a que es necesario reconocer y corregir los
problemas generados por PHP. En producción, se podría establecer esta directiva a
un nivel de menor verbosidad como
<code>E_ALL &amp; ~E_NOTICE &amp; ~E_STRICT &amp; ~E_DEPRECATED</code>, aunque
<code>E_ALL &amp; ~E_NOTICE &amp; ~E_DEPRECATED</code>, aunque
en muchos casos <constant>E_ALL</constant> también es apropiado, ya que puede
proporcionar advertencias precoces de problemas potenciales.
</para>
<para>
Lo que PHP hace con estos errores depende de dos directivas más de php.ini.
<link linkend="ini.display-errors"><parameter>display_errors</parameter></link>
@@ -52,7 +52,7 @@
información confidencial tal como contraseñas de bases de datos, aunque a menudo es útil
habilitarla en desarrollo debido a que asegura la notificación inmediata de problemas.
</para>
<para>
Además de mostrar errores, PHP puede registrarlos cuando la directiva
<link linkend="ini.log-errors"><parameter>log_errors</parameter></link>
@@ -63,10 +63,10 @@
los errores que ocurran y generar informes basados en ellos.
</para>
</sect2>
<sect2 xml:id="language.errors.basics.user">
<title>Manejadores de errores de usuario</title>
<para>
Si el manejo de errores predeterminado de PHP es inadecuado, también se pueden manejar muchos
tipos de error con un manejador de errores propio mediante
@@ -99,4 +99,3 @@ vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: fd35a907bb40a81e8ce5a8905944e9701a82abce Maintainer: seros Status: ready -->
<!-- EN-Revision: 4bf789e981af0836c41daa16e57ef86c21497faa Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="language.errors.php7" xmlns="http://docbook.org/ns/docbook">
<title>Errores en PHP 7</title>
<para>
PHP 7 cambia la mayoría de los errores notificados por PHP. En lugar de notificar
errores a través del mecanismo de notificación de errores tradicional de PHP 5, la mayoría
de los errores ahora son notificados lanzando excepciones <classname>Error</classname>.
</para>
<para>
Al igual que las excepciones normales, las excepciones <classname>Error</classname>
se propagarán hasta alcanzar el primer bloque
@@ -21,7 +21,7 @@
y si no hubiera ningún manejador de excepciones predeterminado, la excepción será
convertida en un error fatal y será manejada como un error tradicional.
</para>
<para>
Debido a que la jerarquía de <classname>Error</classname> no hereda de
<classname>Exception</classname>, el código que emplee bloques
@@ -30,10 +30,10 @@
son capturados por dichos bloques. Se requiere, por tanto, un bloque <code>catch (Error $e) { ... }</code>
o un manejador <function>set_exception_handler</function>.
</para>
<sect2 xml:id="language.errors.php7.hierarchy">
<title>Jerarquía de <classname>Error</classname></title>
<itemizedlist>
<listitem>
<simpara><classname>Throwable</classname></simpara>
@@ -68,6 +68,18 @@
</listitem>
</itemizedlist>
</listitem>
<listitem>
<simpara><classname>ValueError</classname></simpara>
</listitem>
<listitem>
<simpara><classname>UnhandledMatchError</classname></simpara>
</listitem>
<listitem>
<simpara><classname>FiberError</classname></simpara>
</listitem>
<listitem>
<simpara><classname>RequestParseBodyException</classname></simpara>
</listitem>
</itemizedlist>
</listitem>
<listitem>
@@ -104,4 +116,3 @@ vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

View File

@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 460f49a93d103cac99556147cb9325b095ca3d42 Maintainer: yago Status: ready -->
<!-- EN-Revision: 63b48309213faf184b4c2b6333e19675654aa473 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes -->
<refentry xml:id="iteratoraggregate.getiterator" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>IteratorAggregate::getIterator</refname>
<refpurpose>Recuperar un Iterator externo</refpurpose>
<refpurpose>Recuperar un Iterator o traversable externo</refpurpose>
</refnamediv>
<refsect1 role="description">
@@ -14,7 +14,7 @@
<void/>
</methodsynopsis>
<para>
Devuelve un iterador externo.
Devuelve un iterador o traversable externo.
</para>
</refsect1>

View File

@@ -3,167 +3,138 @@
<!-- EN-Revision: d98f67b5c6a30cdb8f323320ecb70e61309c5920 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes Maintainer: Marqitos -->
<sect1 xml:id="language.types.integer">
<title>Números enteros (Integers)</title>
<title>Los enteros</title>
<simpara>
Un número entero (o <type>integer</type>) es un número del conjunto
Un &integer; es un número perteneciente al conjunto
&#8484; = {..., -2, -1, 0, 1, 2, ...}.
</simpara>
<para>
Véase también:
</para>
<itemizedlist>
<listitem>
<simpara>
<link linkend="book.gmp">Enteros de longitud arbitraria / GMP</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="language.types.float">Números de punto flotante</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.bc">Precisión arbitraria / BCMath</link>
</simpara>
</listitem>
</itemizedlist>
<sect2 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><link linkend="language.types.float">Los números de coma flotante</link></member>
<member><link linkend="book.bc">Las precisiones arbitrarias / BCMath</link></member>
<member><link linkend="book.gmp">Los enteros de longitud arbitraria / GMP</link></member>
</simplelist>
</para>
</sect2>
<sect2 xml:id="language.types.integer.syntax">
<title>Sintaxis</title>
<simpara>
Los <type>integer</type> pueden especificarse mediante notación decimal
(base 10), hexadecimal (base 16), octal (base 8) o binaria (base 2), opcionalmente
precedidos por un signo (- o +).
Los &integer;s pueden ser especificados en notación decimal (base 10), hexadecimal
(base 16), octal (base 8), o binaria (base 2).
El <link linkend="language.operators.arithmetic">operador de negación</link>
puede ser utilizado para designar un &integer; negativo.
</simpara>
<para>
Los literales de tipo <type>integer</type> binarios están disponibles desde PHP 5.4.0.
Para utilizar la notación octal, preceda el número de un <literal>0</literal> (cero).
A partir de PHP 8.1.0, la notación octal puede ser precedida con <literal>0o</literal> o <literal>0O</literal>.
Para utilizar la notación hexadecimal, preceda el número de <literal>0x</literal>.
Para utilizar la notación binaria, preceda el número de <literal>0b</literal>.
</para>
<para>
Para utilizar la notación octal, se antepone al número un <literal>0</literal> (cero).
Para utilizar la notación hexadecimal, se antepone al número <literal>0x</literal>.
Para utilizar la notación binaria, se antepone al número <literal>0b</literal>.
A partir de PHP 7.4.0, los enteros literales pueden contener underscores
(<literal>_</literal>) entre los dígitos, para una mejor legibilidad
de los literales. Estos underscores son eliminados por el scanner de PHP.
</para>
<example>
<title>Literales de números enteros</title>
<title>Los enteros literales</title>
<programlisting role="php">
<![CDATA[
<?php
$a = 1234; // número decimal
$a = -123; // un número negativo
$a = 0123; // número octal (equivale a 83 decimal)
$a = 0x1A; // número hexadecimal (equivale a 26 decimal)
$a = 0b11111111; // número binario (equivale al 255 decimal)
$a = 1234; // un número decimal
$a = 0123; // un número octal (equivalente a 83 en decimal)
$a = 0o123; // un número octal (a partir de PHP 8.1.0)
$a = 0x1A; // un número hexadecimal (equivalente a 26 en decimal)
$a = 0b11111111; // un número binario (equivalente a 255 en decimal)
$a = 1_234_567; // un número decimal (a partir de PHP 7.4.0)
?>
]]>
</programlisting>
</example>
<para>
Formalmente, la estructura de los literales de tipo <type>integer</type> es:
Formalmente, la estructura de un <type>entero</type> literal es a partir de PHP 8.1.0
(anteriormente, los prefijos octales <literal>0o</literal> o <literal>0O</literal>
no estaban permitidos, y antes de PHP 7.4.0, los underscores no estaban permitidos.
</para>
<informalexample>
<programlisting>
<![CDATA[
decimal : [1-9][0-9]*
decimal : [1-9][0-9]*(_[0-9]+)*
| 0
hexadecimal : 0[xX][0-9a-fA-F]+
hexadecimal : 0[xX][0-9a-fA-F]+(_[0-9a-fA-F]+)*
octal : 0[0-7]+
octal : 0[oO]?[0-7]+(_[0-7]+)*
binario : 0b[01]+
binary : 0[bB][01]+(_[01]+)*
entero : [+-]?decimal
| [+-]?hexadecimal
| [+-]?octal
| [+-]?binario
integer : decimal
| hexadecimal
| octal
| binary
]]>
</programlisting>
</informalexample>
<para>
El tamaño de un <type>integer</type> depende de la plataforma, aunque el valor usual
es un valor máximo de aproximadamente dos mil millones (esto es, 32 bits con signo).
Las plataformas de 64 bits normalmente tienen un valor máximo de aproximadamente 9E18, excepto en
Windows antes de PHP 7, que siempre es de 32 bits. PHP no tiene soporte para el tipo
<type>integer</type> sin signo. El tamaño de un <type>integer</type> se puede determinar
mediante la constante <constant>PHP_INT_SIZE</constant>, y el valor máximo mediante la
constante <constant>PHP_INT_MAX</constant> desde PHP 4.4.0 y PHP 5.0.5,
y el valor mínimo mediante la constante <constant>PHP_INT_MIN</constant> desde
PHP 7.0.0.
El tamaño de un &integer; es dependiente de la plataforma, sin embargo,
un valor máximo de aproximadamente 2 mil millones es habitual (esto corresponde
a 32 bits con signo). Las plataformas de 64 bits tienen habitualmente un valor
máximo de aproximadamente 9E18.
PHP no soporta &integer;s sin signo.
El tamaño de un &integer; puede ser determinado utilizando la constante
<constant>PHP_INT_SIZE</constant>, el valor máximo, utilizando
la constante <constant>PHP_INT_MAX</constant>,
y el valor mínimo utilizando la constante
<constant>PHP_INT_MIN</constant>.
</para>
<warning>
<para>
Antes de PHP 7, si a un <type>integer</type> octal se le proporcionaba un dígito no válido
(esto es, 8 o 9), se ignoraba el resto del número. Desde PHP 7, se emite un error
de análisis.
</para>
</warning>
</sect2>
<sect2 xml:id="language.types.integer.overflow">
<title>Desbordamiento de enteros</title>
<title>Desbordamiento de entero</title>
<para>
Si PHP encuentra un número fuera de los límites de un <type>integer</type>,
se interpretará en su lugar como un valor de tipo <type>float</type>. También, una
operación cuyo resultado sea un número fuera de los límites de un
<type>integer</type> devolverá en su lugar un valor de tipo <type>float</type>.
Si PHP encuentra un número superior al máximo de un &integer;, será
interpretado como un &float;. De la misma manera, una operación que resulte en
un número fuera del rango del tipo &integer; devolverá un &float;.
</para>
<example>
<title>Desbordamiento de enteros en sistemas de 32 bit</title>
<title>Desbordamiento de entero en un sistema de 32 bits</title>
<programlisting role="php">
<![CDATA[
<?php
$número_grande = 2147483647;
var_dump($número_grande); // int(2147483647)
$número_grande = 2147483648;
var_dump($número_grande); // float(2147483648)
$millón = 1000000;
$número_grande = 50000 * $millón;
var_dump($número_grande); // float(50000000000)
$large_number = 50000000000000000000;
var_dump($large_number); // float(5.0E+19)
var_dump(PHP_INT_MAX + 1); // sistema de 32 bits: float(2147483648)
// sistema de 64 bits: float(9.2233720368548E+18)
?>
]]>
</programlisting>
</example>
</sect2>
<example>
<title>Desbordamiento de enteros en sistemas de 64 bit</title>
<programlisting role="php">
<![CDATA[
<?php
$número_grande = 9223372036854775807;
var_dump($número_grande); // int(9223372036854775807)
$número_grande = 9223372036854775808;
var_dump($número_grande); // float(9.2233720368548E+18)
$millón = 1000000;
$número_grande = 50000000000000 * $millón;
var_dump($número_grande); // float(5.0E+19)
?>
]]>
</programlisting>
</example>
<sect2 xml:id="language.types.integer.division">
<title>División de entero</title>
<para>
No existe el operador de división de <type>integer</type> en PHP.
<literal>1/2</literal> produce el <type>float</type> <literal>0.5</literal>.
El valor puede ser convertido a un <type>integer</type> redondeándolo a cero, o
mediante la función <function>round</function> que permite un mayor control sobre el redondeo.
No hay operador de división de &integer; en PHP, para lograr esto
utilizar la función <function>intdiv</function>.
<literal>1/2</literal> produce el &float; (<literal>0.5</literal>).
El valor puede ser convertido en un &integer; para redondear hacia cero, o
utilizando la función <function>round</function> para tener un control
más fino sobre la forma en que se realiza el redondeo.
</para>
<informalexample>
@@ -180,91 +151,118 @@ var_dump(round(25/7)); // float(4)
</sect2>
<sect2 xml:id="language.types.integer.casting">
<title>Conversión a números enteros</title>
<title>Conversión a entero</title>
<simpara>
Para convertir explícitamente un valor al tipo <type>integer</type> se puede emplear
tanto <literal>(int)</literal> como <literal>(integer)</literal>. Sin embargo,
la mayoría de las veces la conversión no es necesaria, ya que un valor es convertido
de forma automática cuando un operador, función o estructura de control requiera un
argumento de tipo <type>integer</type>. Un valor también puede ser convertido al
tipo <type>integer</type> mediante la función <function>intval</function>.
Para convertir explícitamente un valor en un &integer;, utilizar ya sea
la palabra clave <literal>(int)</literal>, o <literal>(integer)</literal>.
Sin embargo, en la mayoría de los casos, esta palabra clave no es necesaria
ya que un valor será automáticamente convertido si un operador, una
función o una estructura de control requiere un &integer; como argumento. Un valor también puede ser convertido en un &integer;
utilizando la función <function>intval</function>.
</simpara>
<simpara>
Si un <type>resource</type> es convertido a un <type>integer</type>,
el resultado será el número de recurso único asignado al
<type>resource</type> por PHP durante la ejecución.
Si un &resource; es convertido a un &integer;, entonces
el resultado será el identificador único del &resource; asignado
por PHP en la ejecución.
</simpara>
<simpara>
Consulte también la <link linkend="language.types.type-juggling">Manipulación de tipos</link>.
Ver también <link linkend="language.types.type-juggling">el transtipado</link>.
</simpara>
<sect3 xml:id="language.types.integer.casting.from-boolean">
<title>Desde <link linkend="language.types.boolean">booleanos</link></title>
<title>Desde un <link linkend="language.types.boolean">booléen</link></title>
<simpara>
&false; producirá <literal>0</literal> (cero), y &true; producirá
&false; corresponde a <literal>0</literal> (cero), y &true; corresponde a
<literal>1</literal> (uno).
</simpara>
</sect3>
<sect3 xml:id="language.types.integer.casting.from-float">
<title>
Desde <link linkend="language.types.float">números de punto flotante</link>
Desde <link linkend="language.types.float">un número de coma flotante</link>
</title>
<simpara>
Cuando se convierte un <type>float</type> a un <type>integer</type>, el número
será redondeado <emphasis>hacia cero</emphasis>.
Al convertir un &float; en &integer;, el número es redondeado
<emphasis>hacia cero</emphasis>.
A partir de PHP 8.1.0, se emite una notificación de deprecación al realizar la
conversión implícita de un &float; no integral a &integer; perdiendo precisión.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
function foo($value): int {
return $value;
}
var_dump(foo(8.1)); // "Deprecated: Implicit conversion from float 8.1 to int loses precision" a partir de PHP 8.1.0
var_dump(foo(8.1)); // Antes de PHP 8.1.0
var_dump(foo(8.0)); // 8 en ambos casos
var_dump((int) 8.1); // 8 en ambos casos
var_dump(intval(8.1)); // 8 en ambos casos
?>
]]>
</programlisting>
<para>
Si el valor de tipo float esta por debajo de los límites de un <type>integer</type> (normalmente
Si el número de coma flotante está más allá de los límites de los &integer;s (habitualmente,
<literal>+/- 2.15e+9 = 2^31</literal> en plataformas de 32 bits y
<literal>+/- 9.22e+18 = 2^63</literal> en plataformas de 64 bits distintas de
Windows), el resultado es indefinido, debido a que <type>float</type> no tiene
la precisión suficiente para ofrecer el resultado como un <type>integer</type> exacto.
No se mostrará ninguna advertencia, ni siquiera un aviso, cuando esto ocurra.
<literal>+/- 9.22e+18 = 2^63</literal> en plataformas de 64 bits),
el resultado será indefinido, ya que el &float; no tiene suficiente precisión para dar un resultado &integer; exacto.
¡No se emite ninguna alerta cuando ocurre este comportamiento!
</para>
<note>
<para>
A partir de PHP 7.0.0,0, en lugar de ser indefinidos y dependientes de la plataforma, NaN e Infinity
siempre serán cero al amoldarlos a <type>integer</type>.
<literal>NaN</literal>, <literal>Infinity</literal> y <literal>-Inf</literal> son siempre igual a cero al convertir a
<type>int</type>.
</para>
</note>
<warning>
<para>
Nunca se debe convertir una fracción desconocida a un <type>integer</type>, ya que
a veces puede conducir a resultados inesperados.
Nunca convierta una fracción desconocida a un &integer;, esto puede
generar resultados inesperados.
</para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
echo (int) ( (0.1+0.7) * 10 ); // ¡muestra 7!
echo (int) ( (0.1+0.7) * 10 ); // Muestra 7 !
?>
]]>
</programlisting>
</informalexample>
<para>
Consulte también la <link linkend="warn.float-precision">advertencia sobre la precisión de
float</link>
Ver también la sección sobre <link linkend="warn.float-precision">las alertas
concernientes a la precisión de los números de coma flotante</link>.
</para>
</warning>
</sect3>
<sect3 xml:id="language.types.integer.casting.from-string">
<title>Desde strings</title>
<title>Desde cadenas de caracteres</title>
<simpara>
Consulte <link linkend="language.types.string.conversion">Conversión de string a
números</link>
Si una cadena es
<link linkend="language.types.numeric-strings">numérica</link>
o numérica de cabeza entonces será transformada en su valor entero
correspondiente, de lo contrario será convertida a cero (<literal>0</literal>).
</simpara>
</sect3>
<sect3 xml:id="language.types.integer.casting-from-null">
<title>Desde <type>NULL</type></title>
<simpara>
&null; es siempre convertido en cero (<literal>0</literal>).
</simpara>
</sect3>
@@ -273,8 +271,8 @@ echo (int) ( (0.1+0.7) * 10 ); // ¡muestra 7!
<caution>
<simpara>
El comportamiento de la conversión de <type>integer</type> a otros tipos es indefinido.
<emphasis>No</emphasis> confíe en ningún comportamiento observado, ya que puede
El comportamiento de la conversión a &integer; es indefinido desde otros tipos.
No informar <emphasis>ningún</emphasis> comportamiento observado, ya que pueden
cambiar sin previo aviso.
</simpara>
</caution>

View File

@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 4f5e2b22575131fa5e9c3004b1c874e1acb06573 Maintainer: PhilDaiguille Status: ready -->
<!-- EN-Revision: c1f37a6c270aadbbb3da56a3973ffd62197adf2b Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes Maintainer: Marqitos -->
<refentry xml:id="domxpath.evaluate" xmlns="http://docbook.org/ns/docbook">
<refentry xml:id="domxpath.evaluate" xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude">
<refnamediv>
<refname>DOMXPath::evaluate</refname>
<refpurpose>
Evalúa la expresión XPath dada y devuelve un resultado escrito si es posible
Evalúa una expresión XPath dada y devuelve un resultado tipado si es posible
</refpurpose>
</refnamediv>
<refsect1 role="description">
@@ -17,8 +17,8 @@
<methodparam choice="opt"><type>bool</type><parameter>registerNodeNS</parameter><initializer>&true;</initializer></methodparam>
</methodsynopsis>
<para>
Ejecuta la expresión XPath dada por <parameter>expression</parameter> y devuelve
un resultado escrito si es posible.
Ejecuta la expresión XPath <parameter>expression</parameter>
y devuelve un resultado tipado si es posible.
</para>
</refsect1>
<refsect1 role="parameters">
@@ -37,48 +37,43 @@
<term><parameter>contextNode</parameter></term>
<listitem>
<para>
El argumento opcional <parameter>contextNode</parameter> se puede especificar para
hacer consultas XPath relativas. Por omisión, las consultas son relativas al
elemento raíz.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>registerNodeNS</parameter></term>
<listitem>
<para>
El argumento opcional <parameter>registerNodeNS</parameter> puede ser especificado para
deshabilitar el registro automático del nodo de contexto.
El argumento opcional <parameter>contextNode</parameter> puede ser
especificado para realizar consultas XPath relativas. Por omisión, las consultas
son relativas al elemento root.
</para>
</listitem>
</varlistentry>
&dom.parameters.register_node_ns;
</variablelist>
</para>
</refsect1>
<xi:include xpointer="domxpath.query..errors" />
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Devuelve un resultado escrito si es posible o un objeto <classname>DOMNodeList</classname>
que contiene todos los nodos coincidentes con la expresión XPath dada por <parameter>expression</parameter>.
Devuelve un resultado tipado si es posible o un <classname>DOMNodeList</classname>
que contiene todos los nodos que coinciden con la expresión XPath
<parameter>expression</parameter>.
</para>
<para>
Si el argumento <parameter>expression</parameter> está malformado
o el argumento <parameter>contextNode</parameter> es inválido,
<methodname>DOMXPath::evaluate</methodname> devuelve &false;.
Si el argumento <parameter>expression</parameter> está mal formado
o bien si el argumento <parameter>contextNode</parameter> es inválido,
el método <methodname>DOMXPath::evaluate</methodname> devolve &false;.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Obtener el número de todos los libros en inglés</title>
<title>Recuperación del número total de libros en inglés</title>
<programlisting role="php">
<![CDATA[
<?php
$doc = new DOMDocument;
$doc->load('book.xml');
$doc->load('examples/book-dcobook.xml');
$xpath = new DOMXPath($doc);

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 1634a886415d0ab4df195fe49d18a1c150b70758 Maintainer: PhilDaiguille Status: ready -->
<!-- EN-Revision: c1f37a6c270aadbbb3da56a3973ffd62197adf2b Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes Maintainer: Marqitos -->
<book xml:id="book.mbstring" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<book xml:id="book.mbstring" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" annotations="interactive">
<?phpdoc extension-membership="bundled" ?>
<title>Strings multibyte</title>

View File

@@ -1,489 +1,491 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 4ad69796da1868ac61925becc69f49b372d54c6b Maintainer: PhilDaiguille Status: ready -->
<!-- EN-Revision: a9ada9d6f9b5504aca3815eed58aa5d499e03eab Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes Maintainer: Marqitos -->
<chapter xml:id="mbstring.encodings" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Resumen de codificaciones soportadas</title>
<segmentedlist>
<title>Resumen de codificaciones soportadas</title>
<segtitle>Nombre en el registro de conjuntos de caracteres de la IANA</segtitle>
<segtitle>Conjunto de Caracteres</segtitle>
<segtitle>Descripción</segtitle>
<segtitle>Notas adicionales</segtitle>
<seglistitem>
<seg>ISO-10646-UCS-4</seg>
<seg>ISO 10646</seg>
<seg>
Conjunto Universal de Caracteres con 31 bits de codificación, estandarizado como UCS-4
por ISO/IEC 10646. Se mantiene sincronizado con la última versión del
mapa de códigos de Unicode.
</seg>
<seg>
Si se utiliza este nombre con la utilidad de conversión de codificación,
el convertidor intentará identificar, mediante el byte de marca de orden (BOM)
precedente, en qué formato (little-endian o big-endian) están representados los
siguientes bytes.
</seg>
</seglistitem>
<seglistitem>
<seg>ISO-10646-UCS-4</seg>
<seg>UCS-4</seg>
<seg>
Véase más arriba.
</seg>
<seg>
A diferencia de <literal>UCS-4</literal>, los strings siempre
apareceran en formato big-endian.
</seg>
</seglistitem>
<seglistitem>
<seg>ISO-10646-UCS-4</seg>
<seg>UCS-4</seg>
<seg>
Véase más arriba.
</seg>
<seg>
A diferencia de <literal>UCS-4</literal>, los strings siempre
apareceran en formato little-endian.
</seg>
</seglistitem>
<seglistitem>
<seg>ISO-10646-UCS-2</seg>
<seg>UCS-2</seg>
<seg>
Conjunto Universal de Caracteres con 16 bits de codificación, estandarizado como UCS-2
por ISO/IEC 10646. Se mantiene sincronizado con la última versión del
mapa de códigos de Unicode.
</seg>
<seg>
Si se utiliza este nombre con la utilidad de conversión de codificación,
el convertidor intentará identificar, mediante el byte de marca de orden (BOM)
precedente, en qué formato (little-endian o big-endian) están representados los
siguientes bytes.
</seg>
</seglistitem>
<seglistitem>
<seg>ISO-10646-UCS-2</seg>
<seg>UCS-2</seg>
<seg>
Véase más arriba.
</seg>
<seg>
A diferencia de <literal>UCS-2</literal>, los strings siempre
apareceran en formato big-endian.
</seg>
</seglistitem>
<seglistitem>
<seg>ISO-10646-UCS-2</seg>
<seg>UCS-2</seg>
<seg>
Véase más arriba.
</seg>
<seg>
A diferencia de <literal>UCS-2</literal>, los strings siempre
apareceran en formato little-endian.
</seg>
</seglistitem>
<seglistitem>
<seg>UTF-32</seg>
<seg>Unicode</seg>
<seg>
Formato de Transformación Unicode de un ancho de unidad de 32 bits, cuya espacio de codificación
está incluido en el estándar de conjunto de código de Unicode. Esta esquema de codificación no es
igual al UCS-4, porque el espacio de codificación de Unicode estaba limitado a
un valor de 21 bits.
</seg>
<seg>
Si se utiliza este nombre con la utilidad de conversión de codificación,
el convertidor intentará identificar, mediante el byte de marca de orden (BOM)
precedente, en qué formato (little-endian o big-endian) están representados los
siguientes bytes.
</seg>
</seglistitem>
<seglistitem>
<seg>UTF-32BE</seg>
<seg>Unicode</seg>
<seg>Ver más arriba</seg>
<seg>
A diferencia de <literal>UTF-32</literal>, los strings siempre
apareceran en formato big-endian.
</seg>
</seglistitem>
<seglistitem>
<seg>UTF-32LE</seg>
<seg>Unicode</seg>
<seg>Ver más arriba</seg>
<seg>
A diferencia de <literal>UTF-32</literal>, los strings siempre
apareceran en formato little-endian.
</seg>
</seglistitem>
<seglistitem>
<seg>UTF-16</seg>
<seg>Unicode</seg>
<seg>
Formato de Transformación UCS de 16 bits de ancho. Hay que tener en cuenta
que es muy parecido a UCS-2, gracias al mecanismo de subrogación
introducido en Unicode 2.0 y UTF-16, por lo que se requiere un máximo de 21 bits para la
representación de cualquier carácter.
</seg>
<seg>
Si se utiliza este nombre con la utilidad de conversión de codificación,
el convertidor intentará identificar, mediante el byte de marca de orden (BOM)
precedente, en qué formato (little-endian o big-endian) están representados los
siguientes bytes.
</seg>
</seglistitem>
<seglistitem>
<seg>UTF-16BE</seg>
<seg>Unicode</seg>
<seg>
Véase más arriba.
</seg>
<seg>
A diferencia de <literal>UTF-16</literal>, los strings siempre
apareceran en formato big-endian.
</seg>
</seglistitem>
<seglistitem>
<seg>UTF-16LE</seg>
<seg>Unicode</seg>
<seg>
Véase más arriba.
</seg>
<seg>
A diferencia de <literal>UTF-16</literal>, los strings siempre
apareceran en formato little-endian.
</seg>
</seglistitem>
<seglistitem>
<seg>UTF-8</seg>
<seg>Unicode / UCS</seg>
<seg>
Formato de Transformación UCS de 8 bits de ancho..
</seg>
<seg>Ninguna</seg>
</seglistitem>
<seglistitem>
<seg>UTF-7</seg>
<seg>Unicode</seg>
<seg>
Formato de transformación UCS para el envío de correo electrónico seguro, especificado en
<link xlink:href="&url.rfc;2152">RFC2152</link>.
</seg>
<seg>Ninguno</seg>
</seglistitem>
<seglistitem>
<seg>(Ninguno)</seg>
<seg>Unicode</seg>
<seg>
Variante de UTF-7 recomendado para usar con el
<link xlink:href="&url.rfc;3501">protocolo IMAP</link>.
</seg>
<seg>Ninguno</seg>
</seglistitem>
<seglistitem>
<seg>
US-ASCII (preferred MIME name) / iso-ir-6 / ANSI_X3.4-1986 /
ISO_646.irv:1991 / ASCII / ISO646-US / us / IBM367 / CP367 / csASCII
</seg>
<seg>ASCII / ISO 646</seg>
<seg>
Código Estándar Americano para el Intercambio de Información, de utilización
muy extendida con una codifiación de 7 bits. Estandarizado a nivel Internacional, ISO 646.
</seg>
<seg>(Ninguno)</seg>
</seglistitem>
<seglistitem>
<seg>
EUC-JP (nombre preferido por MIME) /
Extended_UNIX_Code_Packed_Format_for_Japanese / csEUCPkdFmtJapanese
</seg>
<seg>
Compuesto de US-ASCII / JIS X0201:1997 (hankaku kana part) /
JIS X0208:1990 / JIS X0212:1990
</seg>
<seg>
Como se puede ver, el nombre está derivado de la abreviación de Formato de Código UNIX
Extendido para el Japonés. Esta codificación se usa principalmente en UNIX o
plataformas afines. El esquema de codificación original, Código UNIX Extendido, se
diseñó sobre la base de ISO 2022.
</seg>
<seg>
El conjunto de caracteres llamado EUC-JP es diferente a IBM932 / CP932,
que son utilizados por OS/2® y Microsoft® Windows®.
Para el intercambio de información con estas plataformas es mejor utilizar EUCJP-WIN.
</seg>
</seglistitem>
<seglistitem>
<seg>Shift_JIS (nombre preferido por MIME) / MS_Kanji / csShift_JIS</seg>
<seg>Compuesto de JIS X0201:1997 / JIS X0208:1997</seg>
<seg>
Shift_JIS fue desarrollado a principios de los 80, al mismo tiempo que
los procesadores de textos en Japonés llegaban al mercado para mantener
la compatibilidad con los antiguos esquemas de codifiación JIS X 0201:1976.
De acuerdo con la definición de la IANA, el conjunto de caracteres Shift_JIS es ligeramente
diferente a IBM932 / CP932. Sin embargo, los nombres "SJIS" / "Shift_JIS" son utilizados
de forma incorrecta para referirse a este conjunto de caracteres.
</seg>
<seg>Para la codificación CP932, es recomendable utilizar SJIS-WIN.</seg>
</seglistitem>
<seglistitem>
<seg>(Ninguno)</seg>
<seg>
Compuesto de JIS X0201:1997 / JIS X0208:1997 / IBM extensions / NEC extensions
</seg>
<seg>
Aunque esta &quot;codificación&quot; utiliza el mismo esquema de codificación que EUC-JP,
el conjunto de caracteres es diferente. Esto es así porque algunos códigos del mapa
apuntan a diferentes caracteres del conjunto de caracteres EUC-JP.
</seg>
<seg>none</seg>
</seglistitem>
<seglistitem>
<seg>Windows-31J / csWindows31J</seg>
<seg>
Compuesto de JIS X0201:1997 / JIS X0208:1997 / IBM extensions / NEC extensions
</seg>
<seg>
Aunque esta &quot;codificación&quot; utiliza el mismo esquema de codificación que Shift-JIS,
el conjunto de caracteres es diferente. Esto es así porque algunos códigos del mapa
apuntan a diferentes caracteres del conjunto de caracteres Shift-JIS.
</seg>
<seg>(none)</seg>
</seglistitem>
<seglistitem>
<seg>ISO-2022-JP (nombre preferido por MIME) / csISO2022JP</seg>
<seg>
US-ASCII / JIS X0201:1976 / JIS X0208:1978 / JIS X0208:1983
</seg>
<seg><link xlink:href="&url.rfc;1468">RFC1468</link></seg>
<seg>(Ninguno)</seg>
</seglistitem>
<seglistitem>
<seg>JIS</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-1</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-2</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-3</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-4</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-5</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-6</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-7</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-8</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-9</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-10</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-13</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-14</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-15</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-16</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>byte2be</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>byte2le</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>byte4be</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>byte4le</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>BASE64</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>HTML-ENTITIES</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>7bit</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>8bit</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>EUC-CN</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>CP936</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>HZ</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>EUC-TW</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>CP950</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>BIG-5</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>EUC-KR</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>UHC (CP949)</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-2022-KR</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>Windows-1251 (CP1251)</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>Windows-1252 (CP1252)</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>CP866 (IBM866)</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>KOI8-R</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>KOI8-U</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
</segmentedlist>
</chapter>
<title>Juegos de caracteres soportados</title>
<segmentedlist>
<title>Juegos de caracteres soportados</title>
<segtitle>Nombre en el registro IANA</segtitle>
<segtitle>Juegos de caracteres</segtitle>
<segtitle>Descripción</segtitle>
<segtitle>Notas</segtitle>
<seglistitem>
<seg>ISO-10646-UCS-4</seg>
<seg>ISO 10646</seg>
<seg>
El juego de caracteres universal (<literal>Universal Character Set</literal>),
con 31 bits por caracter, al estándar <literal>UCS-4</literal>
por <literal>ISO/IEC 10646</literal>. Está sincronizado con
la última versión de Unicode.
</seg>
<seg>
Si este nombre es utilizado en la herramienta de conversión, el convertidor
intenta reconocer el texto a partir del último BOM
(<literal>byte order mark</literal>), para conocer el orden
de los bits.
</seg>
</seglistitem>
<seglistitem>
<seg>ISO-10646-UCS-4</seg>
<seg>UCS-4</seg>
<seg>
Ver arriba.
</seg>
<seg>
A diferencia de <literal>UCS-4</literal>, las cadenas se suponen
estar en formato big endian.
</seg>
</seglistitem>
<seglistitem>
<seg>ISO-10646-UCS-4</seg>
<seg>UCS-4</seg>
<seg>
Ver arriba.
</seg>
<seg>
A diferencia de <literal>UCS-2</literal>, las cadenas se suponen
estar en formato little endian.
</seg>
</seglistitem>
<seglistitem>
<seg>ISO-10646-UCS-2</seg>
<seg>UCS-2</seg>
<seg>
El juego de caracteres universal (<literal>Universal Character Set</literal>),
con 16 bits por caracter, al estándar <literal>UCS-2</literal>
por <literal>ISO/IEC 10646</literal>. Está sincronizado con
la última versión de Unicode.
</seg>
<seg>
Si este nombre es utilizado en la herramienta de conversión, el convertidor
intenta reconocer el texto a partir del último BOM
(<literal>byte order mark</literal>), para conocer el orden
de los bits.
</seg>
</seglistitem>
<seglistitem>
<seg>ISO-10646-UCS-2</seg>
<seg>UCS-2</seg>
<seg>
Ver arriba.
</seg>
<seg>
A diferencia de <literal>UCS-4</literal>, las cadenas se suponen
estar en formato big endian.
</seg>
</seglistitem>
<seglistitem>
<seg>UTF-32</seg>
<seg>Unicode</seg>
<seg>
Formato de transformación de Unicode, de 32 bits, cuyas cartas
corresponden al juego estándar Unicode. Este juego no es idéntico
a <literal>UCS-4</literal> porque los caracteres Unicode estaban limitados
a valores de 21 bits.
</seg>
<seg>
Si este nombre es utilizado en la herramienta de conversión, el convertidor
intenta reconocer el texto a partir del último BOM
(<literal>byte order mark</literal>), para conocer el orden
de los bits.
</seg>
</seglistitem>
<seglistitem>
<seg>UTF-32BE</seg>
<seg>Unicode</seg>
<seg>
Ver arriba.
</seg>
<seg>
A diferencia de <literal>UTF-32</literal>, las cadenas se suponen
estar en formato big endian.
</seg>
</seglistitem>
<seglistitem>
<seg>UTF-32LE</seg>
<seg>Unicode</seg>
<seg>
Ver arriba.
</seg>
<seg>
A diferencia de <literal>UTF-32</literal>, las cadenas se suponen
estar en formato little endian.
</seg>
</seglistitem>
<seglistitem>
<seg>UTF-16</seg>
<seg>Unicode</seg>
<seg>
Formato de transformación de Unicode sobre 16 bits. Se debe notar
que <literal>UTF-16</literal> ya no es idéntico a <literal>UCS-2</literal>
porque un mecanismo fue introducido en Unicode 2.0 y
<literal>UTF-16</literal> ahora hace referencia a un
codificación de 21 bits.
</seg>
<seg>
Si este nombre es utilizado en la herramienta de conversión, el convertidor
intenta reconocer el texto a partir del último BOM
(<literal>byte order mark</literal>), para conocer el orden
de los bits.
</seg>
</seglistitem>
<seglistitem>
<seg>UTF-16BE</seg>
<seg>Unicode</seg>
<seg>
Ver arriba.
</seg>
<seg>
A diferencia de <literal>UTF-16</literal>, las cadenas se suponen
estar en formato big endian.
</seg>
</seglistitem>
<seglistitem>
<seg>UTF-16LE</seg>
<seg>Unicode</seg>
<seg>
Ver arriba.
</seg>
<seg>
A diferencia de <literal>UTF-16</literal>, las cadenas se suponen
estar en formato little endian.
</seg>
</seglistitem>
<seglistitem>
<seg>UTF-8</seg>
<seg>Unicode / UCS</seg>
<seg>
Formato de transformación Unicode de 8 bits.
</seg>
<seg>ninguno</seg>
</seglistitem>
<seglistitem>
<seg>UTF-7</seg>
<seg>Unicode</seg>
<seg>
Un formato compatible con el correo electrónico de Unicode,
especificado en <link xlink:href="&url.rfc;2152">RFC2152</link>.
</seg>
<seg>ninguno</seg>
</seglistitem>
<seglistitem>
<seg>ninguno</seg>
<seg>Unicode</seg>
<seg>
Una variante de <literal>UTF-7</literal> que es especialmente utilizada en el
<link xlink:href="&url.rfc;3501">protocolo IMAP</link>.
</seg>
<seg>ninguno</seg>
</seglistitem>
<seglistitem>
<seg>
US-ASCII (recomendado) / iso-ir-6 / ANSI_X3.4-1986 /
ISO_646.irv:1991 / ASCII / ISO646-US / us / IBM367 / CP367 / csASCII
</seg>
<seg>ASCII / ISO 646</seg>
<seg>
ASCII, <literal>American Standard Code for Information Interchange</literal>
es un formato clásico de 7 bits. También está normalizado internacionalmente,
bajo el nombre <literal>ISO 646</literal>.
</seg>
<seg>(ninguno)</seg>
</seglistitem>
<seglistitem>
<seg>
EUC-JP (recomendado) /
Extended_UNIX_Code_Packed_Format_for_Japanese / csEUCPkdFmtJapanese
</seg>
<seg>
Compuesto de US-ASCII / JIS X0201:1997 (hankaku kana) /
JIS X0208:1990 / JIS X0212:1990
</seg>
<seg>
Como se puede ver, el nombre deriva de la abreviatura de
<literal>Extended UNIX Code Packed Format for Japanese</literal>,
este juego es esencialmente utilizado en plataformas Unix.
El juego original, <literal>Extended UNIX Code</literal>,
está diseñado sobre la base de <literal>ISO 2022</literal>.
</seg>
<seg>
El juego identificado por <literal>EUC-JP</literal> es diferente
de <literal>IBM932 / CP932</literal>, que es utilizado por
<literal>OS/2®</literal> y Microsoft® Windows®.
Para intercambiar información con estas plataformas,
utilice <literal>EUCJP-WIN</literal>.
</seg>
</seglistitem>
<seglistitem>
<seg>Shift_JIS (recomendado) / MS_Kanji / csShift_JIS</seg>
<seg>Compuesto de JIS X0201:1997 / JIS X0208:1997</seg>
<seg>
<literal>Shift_JIS</literal> fue desarrollado a principios de los años 80,
y, al mismo tiempo, los primeros procesadores de texto estaban
en el mercado. Fue hecho para conservar la compatibilidad con
el juego <literal>JIS X 0201:1976</literal>. Según la definición de
IANA, el juego de caracteres <literal>Shift_JIS</literal> es ligeramente
diferente de <literal>IBM932 / CP932</literal>. Sin embargo, los nombres
<literal>"SJIS"</literal> y <literal>"Shift_JIS"</literal> son
a menudo utilizados erróneamente, para estos juegos.
</seg>
<seg>Para <literal>CP932</literal>, utilice <literal>SJIS-WIN</literal>.</seg>
</seglistitem>
<seglistitem>
<seg>(ninguno)</seg>
<seg>
Compuesto de JIS X0201:1997 / JIS X0208:1997 / IBM extensions / NEC extensions
</seg>
<seg>
Aunque este &quot;juego de caracteres&quot; utiliza el mismo juego que
<literal>EUC-JP</literal>, en realidad es diferente. Solo tiene
algunos caracteres de diferencia.
</seg>
<seg>ninguno</seg>
</seglistitem>
<seglistitem>
<seg>Windows-31J / csWindows31J</seg>
<seg>
Compuesto de JIS X0201:1997 / JIS X0208:1997 / IBM extensions / NEC extensions
</seg>
<seg>
Aunque este &quot;juego de caracteres&quot; utiliza el mismo juego que
<literal>Shift_JIS</literal>, en realidad es diferente. Solo tiene
algunos caracteres de diferencia.
</seg>
<seg>(ninguno)</seg>
</seglistitem>
<seglistitem>
<seg>ISO-2022-JP (recomendado) / csISO2022JP</seg>
<seg>
US-ASCII / JIS X0201:1976 / JIS X0208:1978 / JIS X0208:1983
</seg>
<seg><link xlink:href="&url.rfc;1468">RFC1468</link></seg>
<seg>ninguno</seg>
</seglistitem>
<seglistitem>
<seg>JIS</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-1</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-2</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-3</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-4</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-5</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-6</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-7</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-8</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-9</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-10</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-13</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-14</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-15</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-8859-16</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>byte2be</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>byte2le</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>byte4be</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>byte4le</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>BASE64</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>HTML-ENTITIES</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>7bit</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>8bit</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>EUC-CN</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>CP936</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>HZ</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>EUC-TW</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>CP950</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>BIG-5</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>EUC-KR</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>UHC (CP949)</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>ISO-2022-KR</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>Windows-1251 (CP1251)</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>Windows-1252 (CP1252)</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>CP866 (IBM866)</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>KOI8-R</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
<seglistitem>
<seg>KOI8-U</seg>
<seg></seg>
<seg></seg>
<seg></seg>
</seglistitem>
</segmentedlist>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:

View File

@@ -1,33 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: af4410a7e15898c3dbe83d6ea38246745ed9c6fb Maintainer: PhilDaiguille Status: ready -->
<!-- EN-Revision: 92f1b8b177eb5730382abf9f27bae868f1bb636f Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes Maintainer: Marqitos -->
<refentry xml:id="function.mb-convert-variables" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>mb_convert_variables</refname>
<refpurpose>Convierte códigos de caracteres a variable/s</refpurpose>
<refpurpose>Convierte la codificación de variables</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>mb_convert_variables</methodname>
<type class="union"><type>string</type><type>false</type></type><methodname>mb_convert_variables</methodname>
<methodparam><type>string</type><parameter>to_encoding</parameter></methodparam>
<methodparam><type>mixed</type><parameter>from_encoding</parameter></methodparam>
<methodparam><type>mixed</type><parameter role="reference">vars</parameter></methodparam>
<methodparam choice="opt"><type>mixed</type><parameter role="reference">...</parameter></methodparam>
<methodparam><type class="union"><type>array</type><type>string</type></type><parameter>from_encoding</parameter></methodparam>
<methodparam><type>mixed</type><parameter role="reference">var</parameter></methodparam>
<methodparam rep="repeat"><type>mixed</type><parameter role="reference">vars</parameter></methodparam>
</methodsynopsis>
<para>
Convierta
codificaciones de caracteresa de <parameter>vars</parameter> variables de
la codificación <parameter>from_encoding</parameter> a la codificación
<parameter>to_encoding</parameter>.
Convierte la codificación de las variables <parameter>var</parameter> y
<parameter>vars</parameter> desde la codificación
<parameter>from_encoding</parameter> hacia la codificación
<parameter>to_encoding</parameter>
</para>
<para>
<function>mb_convert_variables</function> un string en un Array
u Object para detectar la codificación, ya que la detección de codificaciones tiene a
falla si los strings son cortos. Por lo tanto, es imposible mezclar
codificaciones en un único array u objeto.
<function>mb_convert_variables</function> coloca las strings en un array
o un objeto para detectar la codificación, pero la detección tiende a fallar
para strings de pequeño tamaño. Por lo tanto, no es posible mezclar codificaciones en un array o un objeto "simple".
</para>
</refsect1>
@@ -39,7 +38,7 @@
<term><parameter>to_encoding</parameter></term>
<listitem>
<para>
La codificación a la que se va a convertir <type>string</type>.
La codificación a la cual la string debe ser convertida.
</para>
</listitem>
</varlistentry>
@@ -47,10 +46,23 @@
<term><parameter>from_encoding</parameter></term>
<listitem>
<para>
<parameter>from_encoding</parameter> se especifica mediante un <type>array</type>
o <type>string</type> separado por comas, e intenta detectar la codificación desde
<parameter>from-coding</parameter>. Cuando <parameter>from_encoding</parameter>
se omite, se utiliza <literal>detect_order</literal>.
<parameter>from-encoding</parameter> es una lista de codificaciones posibles
para las variables <parameter>vars</parameter>, proporcionada en forma de un
array o una lista de codificaciones, separadas por comas.
Si <parameter>from_encoding</parameter> es omitido,
las codificaciones proporcionadas en <function>mb_detect_order</function> son
utilizadas.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>var</parameter></term>
<listitem>
<para>
<parameter>var</parameter> es una referencia a una variable
a convertir. Las strings, arrays y objetos también son soportados.
<function>mb_convert_variables</function> toma todos estos parámetros
con la misma codificación.
</para>
</listitem>
</varlistentry>
@@ -58,18 +70,7 @@
<term><parameter>vars</parameter></term>
<listitem>
<para>
<parameter>vars</parameter> es la referencia a la
variable que va a ser convertida. Se aceptan String, Array y Object.
<function>mb_convert_variables</function> asume que todos los parámetros
tienen la misma codificación.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>...</parameter></term>
<listitem>
<para>
<parameter>vars</parameter> adicionales.
Variables adicionales.
</para>
</listitem>
</varlistentry>
@@ -80,8 +81,8 @@
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
La codificación de caracteres antes de la conversión en caso de éxito,
o &false; en caso de error.
La codificación antes de la conversión en caso de éxito, o &false;
si ocurre un error.
</para>
</refsect1>
@@ -89,11 +90,11 @@
&reftitle.examples;
<para>
<example>
<title>Ejemplo de <function>mb_convert_variables</function></title>
<title>Ejemplo con <function>mb_convert_variables</function></title>
<programlisting role="php">
<![CDATA[
<?php
/* Convertir las variables $post1, $post2 a la codificación interna */
/* Convierte las variables $post1, $post2 a la codificación interna */
$interenc = mb_internal_encoding();
$inputenc = mb_convert_variables($interenc, "ASCII,UTF-8,SJIS-win", $post1, $post2);
?>
@@ -104,7 +105,6 @@ $inputenc = mb_convert_variables($interenc, "ASCII,UTF-8,SJIS-win", $post1, $pos
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,21 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 8702e0b4341a111699407167a301a2b0bcdfb4e8 Maintainer: PhilDaiguille Status: ready -->
<!-- EN-Revision: 5b3fc18be040c1d552da1497415b20296163012f Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes Maintainer: Marqitos -->
<refentry xml:id="function.mb-internal-encoding" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>mb_internal_encoding</refname>
<refpurpose>Establece/obtiene la codificación de caracteres interna</refpurpose>
<refpurpose>Lee/modifica la codificación interna</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>mixed</type><methodname>mb_internal_encoding</methodname>
<methodparam choice="opt"><type>string</type><parameter>encoding</parameter><initializer>mb_internal_encoding()</initializer></methodparam>
<type class="union"><type>string</type><type>bool</type></type><methodname>mb_internal_encoding</methodname>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>encoding</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
Establece/obtiene la codificación de caracteres interna.
Lee/modifica la codificación interna.
</para>
</refsect1>
@@ -27,11 +27,9 @@
<term><parameter>encoding</parameter></term>
<listitem>
<para>
<parameter>encoding</parameter> es el nombre de la codificación de caracteres
usada para la conversión de la codificación de caracteres de entrada HTTP, la conversión
de la codificación de caracteres de salida HTTP , y la codificación de caracteres predeterminada
para funciones de strings definidas por el módulo mbstring.
Debería observarse que la codificación interna es totalmente diferente de la de la expresión regular multibyte.
<parameter>encoding</parameter> se utiliza durante las conversiones de
strings provenientes y dirigidas hacia la web, así como durante la creación de strings con el módulo mbstring. Se debe tener en cuenta que la codificación interna es completamente diferente
de la de las regex multioctetos.
</para>
</listitem>
</varlistentry>
@@ -42,26 +40,61 @@
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Si se establece <parameter>encoding</parameter>, entonces
Si <parameter>encoding</parameter> es proporcionado,
&return.success;
En este caso, la codificación de caracteres para expresiones regulares multibyte NO se cambia.
Si se omite <parameter>encoding</parameter>, entonces
devolverá el nombre de la codificación de caracteres en uso.
En este caso, la codificación de caracteres para las regex multioctetos
no se cambia. Si <parameter>encoding</parameter>
es omitido, <function>mb_internal_encoding</function> devuelve el
nombre de la codificación actual.
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
A partir de PHP 8.0.0, se lanza una <classname>ValueError</classname> si el valor
de <parameter>encoding</parameter> es una codificación inválida.
Anterior a PHP 8.0.0, se emitía una <constant>E_WARNING</constant> en su lugar.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
&mbstring.changelog.encoding-nullable;
<row>
<entry>8.0.0</entry>
<entry>
Ahora lanza una <classname>ValueError</classname> si
<parameter>encoding</parameter> es una codificación inválida.
Anteriormente, se emitía una <constant>E_WARNING</constant> en su lugar.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Ejemplo de <function>mb_internal_encoding</function></title>
<title>Ejemplo con <function>mb_internal_encoding</function></title>
<programlisting role="php">
<![CDATA[
<?php
/* Establecer la codificación de caracteres interna a UTF-8 */
/* Utiliza la codificación interna UTF-8 */
mb_internal_encoding("UTF-8");
/* Mostrar la codificación de caracteres interna en uso */
/* Muestra la codificación interna actual */
echo mb_internal_encoding();
?>
]]>
@@ -90,7 +123,6 @@ echo mb_internal_encoding();
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml

View File

@@ -1,26 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 8c2aa928b0ee108b4c29394ba20b1c5d2076eebc Maintainer: PhilDaiguille Status: ready -->
<!-- EN-Revision: bb66ce4d449049730d4967ce74fb68f15a138612 Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes Maintainer: Marqitos -->
<refentry xml:id="function.mb-split" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>mb_split</refname>
<refpurpose>Divide strings multibyte usando una expresión regular</refpurpose>
<refpurpose>Divide una string en un array utilizando una expresión regular multibyte</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>array</type><methodname>mb_split</methodname>
<type class="union"><type>array</type><type>false</type></type><methodname>mb_split</methodname>
<methodparam><type>string</type><parameter>pattern</parameter></methodparam>
<methodparam><type>string</type><parameter>string</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>limit</parameter><initializer>-1</initializer></methodparam>
</methodsynopsis>
<simpara>
Divide un
<parameter>string</parameter> multibyte usando la expresión regular
<parameter>pattern</parameter> y devolviendo el resultado como un
<type>array</type>.
Divide la string multibyte
<parameter>string</parameter> utilizando la expresión regular
<parameter>pattern</parameter> y devuelve el resultado en forma de array.
</simpara>
</refsect1>
@@ -32,7 +31,7 @@
<term><parameter>pattern</parameter></term>
<listitem>
<para>
El patrón de la expresión regular.
La máscara de la expresión regular.
</para>
</listitem>
</varlistentry>
@@ -40,7 +39,7 @@
<term><parameter>string</parameter></term>
<listitem>
<para>
El <type>string</type> que va a ser dividido.
La string a dividir.
</para>
</listitem>
</varlistentry>
@@ -48,9 +47,8 @@
<term><parameter>limit</parameter></term>
<listitem>
<simpara>
Si se especifica el parámetro opcional <parameter>limit</parameter>,
la división será de <parameter>limit</parameter> elementos como
máximo.
Si el argumento opcional <parameter>limit</parameter> es especificado,
la string será dividida en un máximo de <parameter>limit</parameter> elementos.
</simpara>
</listitem>
</varlistentry>
@@ -61,13 +59,12 @@
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
El resultado como <type>array</type>.
El resultado, en forma de un &array;, &return.falseforfailure;.
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
&note.mbstring.encoding.current;
</refsect1>
@@ -77,6 +74,7 @@
<simplelist>
<member><function>mb_regex_encoding</function></member>
<member><function>mb_ereg</function></member>
<member><function>explode</function></member>
</simplelist>
</para>
</refsect1>

View File

@@ -1,149 +1,110 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: PhilDaiguille Status: ready -->
<!-- EN-Revision: 669c19f74eba53dc8437027380ecc6a6a59ab0bf Maintainer: PhilDaiguille Status: ready -->
<!-- Reviewed: yes Maintainer: Marqitos -->
<chapter xml:id="mbstring.overload" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>
Sobrecarga de Funciones
Exploitación de cadenas multioctetos en PHP
</title>
<para>
Quizás resulte complicado obtener una aplicación de PHP que
funcione en un determinado entorno multibyte. Esto sucede porque la
mayor parte de las aplicaciones de PHP están escritas con las funciones estándar
de strings, como por ejemplo <function>substr</function>, la cual se sabe
que no maneja correctamente los strings codificados de forma multibyte.
&warn.deprecated.feature-7-2-0.removed-8-0-0;
</para>
<para>
mbstring admite la 'sobrecarga de funciones', característica que permite
que tales aplicaciones consideren los multibyes sin necesidad de modificar
el código, sobrecargando las funciones homólogas multibyes sobre las
estándar de strings. Por ejemplo, se invocaría a
<function>mb_substr</function> en lugar de a
<function>substr</function> si se habilitara la sobrecarga de funciones.
En muchos casos, esta funcionalidad simplifica la portabilidad de las
aplicaciones que tan solo admiten codificaciones de un único byte a entornos multibyte.
Puede resultar difícil hacer funcionar una aplicación PHP existente en un entorno multioctetos. Esto se debe a que la mayoría de las aplicaciones PHP están escritas con funciones de cadenas de caracteres estándar como la función
<function>substr</function>, que es conocida por no gestionar adecuadamente las cadenas multioctetos.
</para>
<para>
Para utilizar la sobrecarga de funciones, se ha de establecer
<literal>mbstring.func_overload</literal> en &php.ini; a un
valor positivo que represente una combinación de máscaras de bits que especifiquen
las categorías de las funciones que se sobrecargarán. Para sobrecargar
la función <function>mail</function> debe etablecerse a 1. Para funciones
de string, a 2. Para funciones de expresiones regulares, a 4. Por ejemplo,
si se estableciera a 7, se sobrecargaría las funciones de mail, de string, y de
expresiones regulares. A continuación se muestra la lista de funciones sobrecargadas.
Mbstring también soporta la sobrecarga de funciones, para permitir el soporte de cadenas multioctetos sin modificar los scripts PHP. Utilizando este sistema de sobrecarga de funciones, algunas funciones PHP serán reemplazadas por su equivalente de mbstring. Por ejemplo, <function>mb_substr</function> reemplazará
<function>substr</function>. Este sistema de reemplazo transparente permite una portabilidad simple y eficaz de las aplicaciones.
</para>
<para>
Para utilizar la sobrecarga de funciones, defina
<literal>mbstring.func_overload</literal>, en el &php.ini;, a un valor positivo que represente una combinación de máscaras de octetos especificando las categorías de funciones a sobrecargar. Debe ser definido a 1 para sobrecargar la función <function>mail</function>, 2 para las funciones de cadenas, 4 para las funciones de expresiones regulares. Por ejemplo, con el valor 7, todas las funciones anteriores serán sobrecargadas. A continuación se presenta la lista completa de funciones sobrecargadas, con su función de reemplazo.
<table>
<title>Funciones sobrecargadas</title>
<title>Funciones de reemplazo</title>
<tgroup cols="3">
<thead>
<row>
<entry>valor de mbstring.func_overload</entry>
<entry>función original</entry>
<entry>función sobrecargada</entry>
<entry>Valor de mbstring.func_overload</entry>
<entry>Función original</entry>
<entry>Función de reemplazo</entry>
</row>
</thead>
<tbody>
</thead>
<tbody>
<row>
<entry>1</entry>
<entry><function>mail</function></entry>
<entry><function>mb_send_mail</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strlen</function></entry>
<entry><function>mb_strlen</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strpos</function></entry>
<entry><function>mb_strpos</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strrpos</function></entry>
<entry><function>mb_strrpos</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>substr</function></entry>
<entry><function>mb_substr</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strtolower</function></entry>
<entry><function>mb_strtolower</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strtoupper</function></entry>
<entry><function>mb_strtoupper</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>stripos</function></entry>
<entry><function>mb_stripos</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strripos</function></entry>
<entry><function>mb_strripos</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strstr</function></entry>
<entry><function>mb_strstr</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>stristr</function></entry>
<entry><function>mb_stristr</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strrchr</function></entry>
<entry><function>mb_strrchr</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>substr_count</function></entry>
<entry><function>mb_substr_count</function></entry>
</row>
<row>
<entry>4</entry>
<entry><function>ereg</function></entry>
<entry><function>mb_ereg</function></entry>
</row>
<row>
<entry>4</entry>
<entry><function>eregi</function></entry>
<entry><function>mb_eregi</function></entry>
</row>
<row>
<entry>4</entry>
<entry><function>ereg_replace</function></entry>
<entry><function>mb_ereg_replace</function></entry>
</row>
<row>
<entry>4</entry>
<entry><function>eregi_replace</function></entry>
<entry><function>mb_eregi_replace</function></entry>
</row>
<row>
<entry>4</entry>
<entry><function>split</function></entry>
<entry><function>mb_split</function></entry>
</row>
</row>
<row>
<entry>2</entry>
<entry><function>strlen</function></entry>
<entry><function>mb_strlen</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strpos</function></entry>
<entry><function>mb_strpos</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strrpos</function></entry>
<entry><function>mb_strrpos</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>substr</function></entry>
<entry><function>mb_substr</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strtolower</function></entry>
<entry><function>mb_strtolower</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strtoupper</function></entry>
<entry><function>mb_strtoupper</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>stripos</function></entry>
<entry><function>mb_stripos</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strripos</function></entry>
<entry><function>mb_strripos</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strstr</function></entry>
<entry><function>mb_strstr</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>stristr</function></entry>
<entry><function>mb_stristr</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>strrchr</function></entry>
<entry><function>mb_strrchr</function></entry>
</row>
<row>
<entry>2</entry>
<entry><function>substr_count</function></entry>
<entry><function>mb_substr_count</function></entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<note>
<para>
No se recomienda habilitar la sobrecarga de funciones en un contexto
de directorios, ya que todavía no se ha confirmado que su uso sea
suficientemente estable en un entorno de producción, lo que podría
conducir a comportamientos inesperados.
No se recomienda utilizar el reemplazo de funciones mbstring en un contexto de <literal>per-directory</literal>, ya que no se ha confirmado aún que sean suficientemente estables en un entorno de producción y pueden llevar a resultados incoherentes.
</para>
</note>
</chapter>