Repository: php/doc-es
Pull request #174: add translate new page strings function
Author: login: PhilDaiguille
Created: 2025-03-19T18:00:55Z | Merged: 2025-03-23T16:56:41Z



Diff:
diff --git a/reference/imagick/imagick/resetimagepage.xml b/reference/imagick/imagick/resetimagepage.xml
index d3d217293..96e2d8bbc 100644
--- a/reference/imagick/imagick/resetimagepage.xml
+++ b/reference/imagick/imagick/resetimagepage.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- $Revision$ -->
 <!-- EN-Revision: 0ffb9c9fc8f4bf1589a1a573644e1c23b6b451d1 Maintainer: seros Status: ready -->
+<!-- Reviewed: yes Maintainer: Marqitos -->
 <refentry xmlns="http://docbook.org/ns/docbook" xml:id="imagick.resetimagepage">
  <refnamediv>
   <refname>Imagick::resetImagePage</refname>
@@ -15,7 +16,7 @@
   </methodsynopsis>
 
   <para>
-   La definición de página como un string. La string está en formato WxH+x+y (Ancho+Alto+x+y).
+   La definición de página como un string. El string está en formato WxH+x+y (Ancho+Alto+x+y).
    &imagick.method.available.0x636;
   </para>
  </refsect1>
diff --git a/reference/mysqli/mysqli/query.xml b/reference/mysqli/mysqli/query.xml
index 55fac9603..c062fc360 100644
--- a/reference/mysqli/mysqli/query.xml
+++ b/reference/mysqli/mysqli/query.xml
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- $Revision$ -->
 <!-- EN-Revision: cd09fab47b40563cb8b2316d817efc973d991713 Maintainer: seros Status: ready -->
-<!-- Reviewed: yes Maintainer: seros -->
+<!-- Reviewed: yes Maintainer: Marqitos -->
 <refentry xml:id="mysqli.query" xmlns="http://docbook.org/ns/docbook">
  <refnamediv>
   <refname>mysqli::query</refname>
   <refname>mysqli_query</refname>
   <refpurpose>Realiza una consulta a la base de datos</refpurpose>
  </refnamediv>
- 
+
  <refsect1 role="description">
   &reftitle.description;
   <para>&style.oop;</para>
@@ -30,14 +30,14 @@
   <para>
    Para consultas que no sean DML (distintas de INSERT, UPDATE o DELETE),
    esta funcion es similar a invocar a
-   <function>mysqli_real_query</function> seguida de  
-   <function>mysqli_use_result</function> o 
+   <function>mysqli_real_query</function> seguida de
+   <function>mysqli_use_result</function> o
    <function>mysqli_store_result</function>.
   </para>
   <note>
    <para>
-    En el caso de pasarle una sentencia a 
-    <function>mysqli_query</function> que sea mayor del valor de 
+    En el caso de pasarle una sentencia a
+    <function>mysqli_query</function> que sea mayor del valor de
     <literal>max_allowed_packet</literal> del servidor, los códigos
     de error retornados diferirán dependiendo de si se está usando el Controlador
     Nativo de MySQL (<literal>mysqlnd</literal>) o la Biblioteca Cliente de MySQL
@@ -67,7 +67,7 @@
    </itemizedlist>
   </note>
  </refsect1>
- 
+
  <refsect1 role="parameters">
   &reftitle.parameters;
   <para>
@@ -77,7 +77,7 @@
      <term><parameter>query</parameter></term>
      <listitem>
       <para>
-       La string de la consulta.
+       El &string; de la consulta.
       </para>
       <para>
        Los datos dentro de la consulta deberían estar <link
@@ -109,7 +109,7 @@
    </variablelist>
   </para>
  </refsect1>
- 
+
  <refsect1 role="returnvalues">
   &reftitle.returnvalues;
   <para>
@@ -119,7 +119,7 @@
    retornará &true;.
   </para>
  </refsect1>
- 
+
  <refsect1 role="changelog">
   &reftitle.changelog;
   <para>
@@ -143,7 +143,7 @@
    </informaltable>
   </para>
  </refsect1>
- 
+
  <refsect1 role="examples">
   &reftitle.examples;
   <example>
@@ -240,7 +240,7 @@ Error: Commands out of sync;  You can't run this command now
    </screen>
   </example>
  </refsect1>
- 
+
  <refsect1 role="seealso">
   &reftitle.seealso;
   <para>
@@ -251,7 +251,7 @@ Error: Commands out of sync;  You can't run this command now
    </simplelist>
   </para>
  </refsect1>
- 
+
 </refentry>
 
 <!-- Keep this comment at the end of the file
diff --git a/reference/pcre/pattern.syntax.xml b/reference/pcre/pattern.syntax.xml
index 2938b0a1e..d9d5702ac 100644
--- a/reference/pcre/pattern.syntax.xml
+++ b/reference/pcre/pattern.syntax.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- $Revision$ -->
-<!-- EN-Revision: d65981e8ecf8def27d75b1899dfd1dfff7d29277 Maintainer: seros Status: ready -->
-<!-- Reviewed: no Maintainer: andresdzphp -->
+<!-- EN-Revision: bb4abab22bf0204b4dba0140ac5fc9daa6888e0f Maintainer: Marqitos Status: ready -->
+<!-- Reviewed: no -->
 <!-- splitted from ./en/functions/pcre.xml, last change in rev 1.2 -->
 <chapter xml:id="reference.pcre.pattern.syntax" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
  <title>Sintaxis de Patrón</title>
  <titleabbrev>Sintaxis de expresiones regulares de PCRE</titleabbrev>
- 
+
  <section xml:id="regexp.introduction">
   <title>Introducción</title>
   <para>
@@ -19,13 +19,13 @@
    La descripción aquí dada está prevista como documentación de referencia.
   </para>
   <para>
-   Una expresión regular es un patrón que se compara con una
-   cadena objetivo de izquierda a derecha. La mayoría de los caracteres se
+   Una expresión regular es un patrón que se compara con un
+   &string; objetivo de izquierda a derecha. La mayoría de los caracteres se
    representan a sí mismos en un patrón, y se comparan con el carácter
    correspondiente en el sujeto. Como ejemplo trivial, el patrón
    <literal>El veloz murciélago hindú</literal>
-   coincide con una porción de una cadena objetivo que es idéntica a dicho
-   patrón.  
+   coincide con una porción de un &string; objetivo que es idéntica a dicho
+   patrón.
   </para>
  </section>
  <section xml:id="regexp.reference.delimiters">
@@ -66,8 +66,8 @@
 ]]>
     </programlisting>
    </informalexample>
-   Los delimitadores de estilo de corchete no necesitan escaparse cuando se usan 
-   como meta caracteres dentro del patrón, pero al igual que con otros delimitadores, 
+   Los delimitadores de estilo de corchete no necesitan escaparse cuando se usan
+   como meta caracteres dentro del patrón, pero al igual que con otros delimitadores,
    deben ser escapados cuando se utilizan como caracteres literales.
   </para>
   <para>
@@ -83,7 +83,7 @@
 ]]>
     </programlisting>
    </informalexample>
-   La función <function>preg_quote</function> se puede usar para escapar una cadena
+   La función <function>preg_quote</function> se puede usar para escapar un &string;
    para inyectarla dentro de un patrón y su segundo parámetro opcional de puede usar
    parar especificar el delimitador a escapar.
   </para>
@@ -102,7 +102,7 @@
  </section>
  <section xml:id="regexp.reference.meta">
   <title>Metacaracteres</title>
-  <para>     
+  <para>
    El poder de las expresiones regulares viene dado por la
    capacidad de incluir alternativas y repeticiones en el
    patrón. Éstos están codificadoes en el patrón por el uso de
@@ -114,7 +114,7 @@
    son reconocidos en cualquier lugar de un patrón excepto dentro de
    los corchetes, y aquéllos que son reconocidos dentro de los corchetes.
    Fuera de los corchetes, los metacaracteres son los siguientes:
-   
+
    <table>
     <title>Metacaracteres fuera de corchetes</title>
     <tgroup cols="2">
@@ -170,11 +170,11 @@
      </tbody>
     </tgroup>
    </table>
-   
+
    La parte de un patrón que está entre corchetes se llama una
    <link linkend="regexp.reference.character-classes">clase carácter</link>. En una clase carácter los únicos
    metacaracteres son:
-   
+
    <table>
     <title>Metacaracteres dentro de corchetes (<emphasis>clases carácter</emphasis>)</title>
     <tgroup cols="2">
@@ -196,12 +196,12 @@
      </tbody>
     </tgroup>
    </table>
-   
+
    Las siguientes secciones describen el uso de cada
    metacarácter.
   </para>
  </section>
- 
+
  <section xml:id="regexp.reference.escape">
   <title>Secuencias de escape</title>
   <para>
@@ -331,9 +331,9 @@
    </variablelist>
   </para>
   <para>
-   El efecto exacto de "<literal>\cx</literal>" es como sigue: 
+   El efecto exacto de "<literal>\cx</literal>" es como sigue:
    si "<literal>x</literal>" es una letra minúscula, ésta se convierte
-   a mayúscula. Después se invierte el bit 6 del carácter (40 hex). 
+   a mayúscula. Después se invierte el bit 6 del carácter (40 hex).
    Así, "<literal>\cz</literal>" se convierte en 1A hex, pero
    "<literal>\c{</literal>" se convierte en 3B hex, mientras que "<literal>\c;</literal>"
    se conviente en 7B hex.
@@ -342,7 +342,7 @@
    Después de "<literal>\x</literal>", se leen hasta dos dígitos
    hexadecimales (las letras pueden ser tanto mayúsculas como minúsculas).
    En <emphasis>modo UTF-8</emphasis>, "<literal>\x{...}</literal>" es
-   permitido, donde el contenido entre las llaves es una cadena de dígitos
+   permitido, donde el contenido entre las llaves es un &string; de dígitos
    hexadecimales. Esto se interpreta como un carácter UTF-8 cuyo número de código es
    el dado por el número hexadecimal. La secuencia de escape hexadecimal original,
    <literal>\xhh</literal>, conincide con un carácter UTF-8 de dos bytes si el valor
@@ -351,7 +351,7 @@
   <para>
    Después de "<literal>\0</literal>", se leen hasta dos dígitos octales más.
    En cualquier caso, si hay menos de dos dígitos, sólo se usan
-   aquéllos que están presentes. Así, la secuencia "<literal>\0\x\07</literal>" 
+   aquéllos que están presentes. Así, la secuencia "<literal>\0\x\07</literal>"
    especifica dos ceros binarios seguidos de un carácter BEL. Asegúrese de
    proporcionar dos dígitos después del cero inicial si el carácter
    que sigue es también un dígito octal.
@@ -397,7 +397,7 @@
      <term><emphasis>\11</emphasis></term>
      <listitem>
       <simpara>
-       puede ser una retrorefenrencia, u otra manera de
+       puede ser una retroreferencia, u otra manera de
        escribir una tabulación
       </simpara>
      </listitem>
@@ -447,7 +447,7 @@
    carácter tiene diferentes significados (véase más abajo).
   </para>
   <para>
-   El tercer uso de la barra invertida es parar especificar tipos
+   El tercer uso de la barra invertida es para especificar tipos
    de caracteres genéricos:
   </para>
   <para>
@@ -462,11 +462,11 @@
     </varlistentry>
     <varlistentry>
      <term><emphasis>\h</emphasis></term>
-     <listitem><simpara>cualquier carácter espacio en blanco horizontal (desde PHP 5.2.4)</simpara></listitem>
+     <listitem><simpara>cualquier carácter espacio en blanco horizontal</simpara></listitem>
     </varlistentry>
     <varlistentry>
      <term><emphasis>\H</emphasis></term>
-     <listitem><simpara>cualquier carácter que no es un carácter espacio en blanco horizontal (desde PHP 5.2.4)</simpara></listitem>
+     <listitem><simpara>cualquier carácter que no es un carácter espacio en blanco horizontal</simpara></listitem>
     </varlistentry>
     <varlistentry>
      <term><emphasis>\s</emphasis></term>
@@ -478,11 +478,11 @@
     </varlistentry>
     <varlistentry>
      <term><emphasis>\v</emphasis></term>
-     <listitem><simpara>cualquier carácter espacio en blanco vertical (desde PHP 5.2.4)</simpara></listitem>
+     <listitem><simpara>cualquier carácter espacio en blanco vertical</simpara></listitem>
     </varlistentry>
     <varlistentry>
      <term><emphasis>\V</emphasis></term>
-     <listitem><simpara>cualquier carácter que no es un carácter espacio en blanco vertical (desde PHP 5.2.4)</simpara></listitem>
+     <listitem><simpara>cualquier carácter que no es un carácter espacio en blanco vertical</simpara></listitem>
     </varlistentry>
     <varlistentry>
      <term><emphasis>\w</emphasis></term>
@@ -500,7 +500,7 @@
    concide con uno, y sólo uno, de cada par.
   </para>
   <para>
-   Los caracters "espacios en blanco" son HT (9), LF (10), FF (12), CR (13), 
+   Los caracters "espacios en blanco" son HT (9), LF (10), FF (12), CR (13),
    y el espacio (32). Sin embargo, si ocurre una coincidencia específica de una región,
    los caracteres con puntos de código en el rango 128-255 podrían también considerarse
    como caracteres de espacio en blanco, por ejemplo, NBSP (A0).
@@ -511,21 +511,21 @@
    "<emphasis>palabra</emphasis>" Perl. La definición de letras y dígitos está
    controlada por las tablas de caracteres de PCRE, y pueden variar si  tiene lugar
    la comparación de configuraciones regionales específicas. Por ejemplo, en la configuración regional
-   "fr" (Francés), algunos códigos de caracteres  mayores que 128 se usan para letras acentuadas,
+   "es" (Español), algunos códigos de caracteres mayores que 128 se usan para letras acentuadas,
    y éstos se comparan por <literal>\w</literal>.
   </para>
   <para>
    Estas secuencias de tipo de caracteres puede aparecer tanto dentro como
    fuera de las clases carácter. Cada una coincide con un carácter del
    tipo apropiado. Si el punto de coincidencia actual está
-   al final de la cadena objetivo, todas ellas fallarán, ya que no
+   al final de el &string; objetivo, todas ellas fallarán, ya que no
    hay caracteres a comparar.
   </para>
   <para>
    El cuarto uso de la barra invertida es para ciertas declaraciones
    simples. Una declaración especifica una condición que se debe encontrar
    en un punto particular de una comparación, sin consumir ningún
-   carácter de la cadena objetivo. El uso de sub-patrones
+   carácter de el &string; objetivo. El uso de sub-patrones
    para declaraciones más complicadas se describe después. Las
    declaraciones de la barra invertida son
   </para>
@@ -568,25 +568,25 @@
    retroceso, dentro de una clase carácter).
   </para>
   <para>
-   Un límite de palabra es una posición en la cadena objetivo donde
+   Un límite de palabra es una posición en el &string; objetivo donde
    el carácter actual y el carácter previo no coinciden con
    <literal>\w</literal> o <literal>\W</literal> (es decir, uno coincide con
    <literal>\w</literal> y el otro coincice con
-   <literal>\W</literal>), o el inicio o final de la cadena si el primer o último
+   <literal>\W</literal>), o el inicio o final del &string; si el primer o último
    carácter coincide con <literal>\w</literal>, respectivamente.
   </para>
   <para>
    Las declaraciones <literal>\A</literal>, <literal>\Z</literal>, y
    <literal>\z</literal> difieren de los tradicionales
    circumflejo y dólar (descritos en <link linkend="regexp.reference.anchors">anclas</link>) de modo que siempre
-   coinciden con el inicio y final absolutos de la cadena objetivo,
+   coinciden con el inicio y final absolutos del &string; objetivo,
    sin importar las opciones que se apliquen. No les afectan las opciones
    <link linkend="reference.pcre.pattern.modifiers">PCRE_MULTILINE</link> o
    <link linkend="reference.pcre.pattern.modifiers">PCRE_DOLLAR_ENDONLY</link>.
    La diferencia entre <literal>\Z</literal> y
    <literal>\z</literal> es que <literal>\Z</literal> coincide antes de una
-   nueva línea que es el último carácter de la cadena, además de al final de
-   la cadena, mientras que <literal>\z</literal> coincide sólo con el final.
+   nueva línea que es el último carácter del &string;, además de al final del
+   &string;, mientras que <literal>\z</literal> coincide sólo con el final.
   </para>
   <para>
    La declaración <literal>\G</literal> es verdadera sólo cuando la posición
@@ -595,26 +595,30 @@
    <function>preg_match</function>. Difiere de <literal>\A</literal>
    cuando el valor de <parameter>offset</parameter> no es cero.
   </para>
-  
+
   <para>
    Se puede usar <literal>\Q</literal> y <literal>\E</literal> para ignorar
    metacaracteres de expresiones regulares. Por ejemplo:
    <literal>\w+\Q.$.\E$</literal> coincidirá con uno o más caracteres palabra,
-   seguidos por los literales <literal>.$.</literal> y anclados al final de
-   la cadena.
+   seguidos por los literales <literal>.$.</literal> y anclados al final del
+   &string;. Ten en cuenta que esto no cambia el comportamiento de los
+   delimitadores; por ejemplo, el patrón <literal>#\Q#\E#$</literal>
+   no es válido, porque el segundo <literal>#</literal> marca el final
+   del patrón, y <literal>\E#</literal> se interpreta como
+   modificadores inválidos.
   </para>
-  
+
   <para>
-   A partir de PHP 5.2.4, <literal>\K</literal> se puede usar para reiniciar el comienzo
+   <literal>\K</literal> se puede usar para reiniciar el comienzo
    de comparación. Por ejemplo, el patrón <literal>foo\Kbar</literal> coincide con
    "foobar", pero informa de que ha coincidido con "bar". El uso de
    <literal>\K</literal> no interfiere con el parámetro de las cadenas
    capturadas. Por ejemplo, cuando el patrón <literal>(foo)\Kbar</literal>
    coincide con "foobar", la primera subcadena está establecida aún a "foo".
   </para>
-  
+
  </section>
- 
+
  <section xml:id="regexp.reference.unicode">
   <title>Propiedades de los caracteres Unicode</title>
   <para>
@@ -641,11 +645,11 @@
    a las propiedades de la categoría general de Unicode. Cada carácter tiene exactamente una
    propiedad, especificada por una abreviatura de dos letras. Por compatibilidad con
    Perl, la negación se puede especificar incluyendo un acento circunflejo entre la
-   llave de apertura y el nombre de la propiedad. Por ejemplo, <literal>\p{^Lu}</literal> 
+   llave de apertura y el nombre de la propiedad. Por ejemplo, <literal>\p{^Lu}</literal>
    es lo mismo que <literal>\P{Lu}</literal>.
   </para>
   <para>
-   Si sólo se especifica una letra con <literal>\p</literal> o 
+   Si sólo se especifica una letra con <literal>\p</literal> o
    <literal>\P</literal>, se incluyen todas las propiedades que comienzan con esa
    letra. En este caso, en la ausencia de negación, las llaves en la
    secuencia de escape son opcionales; estos dos ejemplos tienen el mismo efecto:
@@ -705,7 +709,7 @@
       <entry>
        Incluye las siguientes propiedades: <literal>Ll</literal>,
        <literal>Lm</literal>, <literal>Lo</literal>, <literal>Lt</literal> y
-       <literal>Lu</literal>.         
+       <literal>Lu</literal>.
       </entry>
      </row>
      <row>
@@ -725,7 +729,7 @@
      </row>
      <row>
       <entry><literal>Lt</literal></entry>
-      <entry>Letra de título</entry>
+      <entry>Letra capitalizada</entry>
       <entry></entry>
      </row>
      <row rowsep="1">
@@ -836,7 +840,7 @@
      <row rowsep="1">
       <entry><literal>So</literal></entry>
       <entry>Otro símbolo</entry>
-      <entry></entry>
+      <entry>Incluye emojis</entry>
      </row>
      <row>
       <entry><literal>Z</literal></entry>
@@ -1066,14 +1070,14 @@
    en PCRE.
   </para>
  </section>
- 
+
  <section xml:id="regexp.reference.anchors">
   <title>Anclas</title>
   <para>
    Fuera de una clase carácter, en el modo de comparación por defecto, el
    carácter circunflejo (<literal>^</literal>) es una declaración que
    es verdadera sólo si el punto de coincidencia actual está en el inicio de
-   de la cadena objetivo. Dentro de una clase carácter, circunflejo (<literal>^</literal>)
+   del &string; objetivo. Dentro de una clase carácter, circunflejo (<literal>^</literal>)
    tiene un significado totalmente diferente (véase más adelante).
   </para>
   <para>
@@ -1082,15 +1086,15 @@
    debería ser la primera cosa en cada alternativa en la que aparece
    si el patrón es comparado siempre con esa rama. Si todas las posibles
    alternativas comienzan con un circunflejo (<literal>^</literal>), es decir,
-   si el patrón es obligado a coincidir sólo con el comienzo de la cadena objetivo,
+   si el patrón es obligado a coincidir sólo con el comienzo del &string; objetivo,
    se dice que el patrón está "anclado". (También hay otras
    contrucciones que pueden causar que un patrón esté anclado.)
   </para>
   <para>
    Un carácter dólar (<literal>$</literal>) es una declaración la cual es
-   &true; sólo si el punto actual de coincidencia está al final de la cadena
+   &true; sólo si el punto actual de coincidencia está al final del &string;
    objetivo, o inmediatamente antes de un carácter de nueva línea que es el último
-   carácter en la cadena (por defecto). Dólar (<literal>$</literal>)
+   carácter en el &string; (por omisión). Dólar (<literal>$</literal>)
    no necesita ser el último carácter del patrón si están implicadas varias
    alternativas, pero debería ser el último elemento en cualquier rama
    en la que aparezca. Dólar no tiene un significado especial en una
@@ -1098,7 +1102,7 @@
   </para>
   <para>
    El significado de dólar se puede cambiar, de modo que sólo coincida
-   con el final absoluto de la cadena, estableciendo la opción
+   con el final absoluto del &string;, estableciendo la opción
    <link linkend="reference.pcre.pattern.modifiers">PCRE_DOLLAR_ENDONLY</link>
    en tiempo de compilación o comparación. Esto no afecta a la declaración \Z.
   </para>
@@ -1108,8 +1112,8 @@
    <link linkend="reference.pcre.pattern.modifiers">PCRE_MULTILINE</link>
    es establecida. Cuando este es el caso, conciden inmediatemente después e
    inmediatamente antes que un carácter "\n" interno, respectivamente, además
-   de coincidir al principio y final de la cadena objetivo. Por ejemplo, el
-   patrón /^abc$/ coincide con la cadena objetivo "def\nabc" en el modo multilínea,
+   de coincidir al principio y final del &string; objetivo. Por ejemplo, el
+   patrón /^abc$/ coincide con el &string; objetivo "def\nabc" en el modo multilínea,
    y no en otros. Consecuentemente, los patrones que están anclados en el modo
    de una sóla línea, a causa del inicio de todas las ramas con "^", no están anclados en
    el modo multilínea. La opción
@@ -1120,20 +1124,20 @@
   </para>
   <para>
    Observe que las secuencias \A, \Z, y \z se pueden usar para coincidir
-   el inicio y final de la cadena objetivo en ambos modos, y si todas
+   el inicio y final del &string; objetivo en ambos modos, y si todas
    las ramas de un patrón comienzan con \A, el patrón siempre es anclado,
-   sin tener en cuenta si <link linkend="reference.pcre.pattern.modifiers">PCRE_MULTILINE</link>  
+   sin tener en cuenta si <link linkend="reference.pcre.pattern.modifiers">PCRE_MULTILINE</link>
    está establecido o no.
   </para>
  </section>
- 
+
  <section xml:id="regexp.reference.dot">
   <title>Punto</title>
   <para>
    Fuera de una clase carácter, un punto en el patrón coincide con
    un carácter en el sujeto, incluyendo un carácter no imprimible,
    pero no (por defecto) con una nueva línea. Si la opción
-   <link linkend="reference.pcre.pattern.modifiers">PCRE_DOTALL</link> 
+   <link linkend="reference.pcre.pattern.modifiers">PCRE_DOTALL</link>
    está establecida, entonces los puntos coinciden con nuevas líneas tambíen. El
    manejo del punto es totalmente independiente del manejo de
    circunflejo y dólar, la única relación existente es que ambos
@@ -1146,7 +1150,7 @@
    entero, el cual puede consistir en múltiples bytes.
   </para>
  </section>
- 
+
  <section xml:id="regexp.reference.character-classes">
   <title>Clases carácter</title>
   <para>
@@ -1172,9 +1176,9 @@
    una vocal minúscula. Observe que un circunflejo es sólo una
    notación conveniente para especificar los caracteres que están en
    la clase enumerando los que no están. Si no es una
-   declaración: aún consume un carácter de la cadena objetivo,
-   y falla si el punto actual está al final de la
-   cadena.
+   declaración: aún consume un carácter del &string; objetivo,
+   y falla si el punto actual está al final del
+   &string;.
   </para>
   <para>
    Cuando está establecida la coincidencia insensible a mayúsculas-minúculas, cualquier
@@ -1186,7 +1190,7 @@
   <para>
    El carácter nueva línea nunca es tratado de manera especial en
    las clases carácter, sin importar el establecimiento de la opción <link
-   linkend="reference.pcre.pattern.modifiers">PCRE_DOTALL</link> 
+   linkend="reference.pcre.pattern.modifiers">PCRE_DOTALL</link>
    o <link linkend="reference.pcre.pattern.modifiers">PCRE_MULTILINE</link>.
    Una clase como [^a] siempre coincidirá con una nueva línea.
   </para>
@@ -1203,7 +1207,7 @@
    No es posible tener un carácter literal "]" como el
    carácter final de un rango. Un patrón como [W-]46] es
    interpretado como una clase de dos caracteres ("W" y "-")
-   seguido de una cadena literal "46]", por lo que coincidiría con "W46]" o
+   seguido de un &string; literal "46]", por lo que coincidiría con "W46]" o
    "-46]". Sin embargo, si el "]" es escapado con una barra invertida
    es interpretado como el final del rango, así [W-\]46] es
    interpretado como un clase individual que contiene un rango seguido de dos
@@ -1218,7 +1222,7 @@
    letras en cualquier caso. Por ejemplo, [W-c] es equivalente a
    [][\^_`wxyzabc], comparados insensiblemente, y si las tablas
    de caracteres para la configuración regional "fr" están siendo usadas, [\xc8-\xcb] coincide
-   con caracteres E acentudos en ambos casos.
+   con caracteres E acentuados en ambos casos.
   </para>
   <para>
    Los tipos de caracteres \d, \D, \s, \S, \w, y \W también pueden
@@ -1278,7 +1282,7 @@
   <para>
    En el modo UTF-8, los caracteres con valores mayores que 128 no coinciden con ninguna
    de las clases carácter POSIX.
-   A partir de PHP 5.3.0 y libpcre 8.10 se han cambiado algunas características para utilizar
+   A partir libpcre 8.10 se han cambiado algunas características para utilizar
    propiedades de caracteres Unicode, en cuyo caso la restricción mencionada no
    se aplica. Consulte el <link xlink:href="&url.pcre.man;">manual de PCRE(3)</link>
    para más detalles.
@@ -1290,7 +1294,7 @@
    carácter Unicode resultará en una advertencia.
   </para>
  </section>
- 
+
  <section xml:id="regexp.reference.alternation">
   <title>Alternancia</title>
   <para>
@@ -1299,7 +1303,7 @@
    <literal>gilbert|sullivan</literal>
    coincide con "gilbert" o con "sullivan". Pueden aparecer
    cualquier número de alternativas, y se permite una alternativa vacía
-   (coincidiendo con la cadena vacía). El proceso de comparación prueba
+   (coincidiendo con el &string; vacío). El proceso de comparación prueba
    cada alternativa sucesivamente, de izquierda a derecha, y la primera
    que tenga éxito se usa. Si las alternativas están dentro de un
    sub-patrón (definido más adelante), "tener éxito" significa coincidir con el
@@ -1307,12 +1311,12 @@
    sub-patrón.
   </para>
  </section>
- 
+
  <section xml:id="regexp.reference.internal-options">
   <title>Ajuste de opciones internas</title>
   <para>
-   Los ajustes de <link linkend="reference.pcre.pattern.modifiers">PCRE_CASELESS</link>, 
-   <link linkend="reference.pcre.pattern.modifiers">PCRE_MULTILINE</link>,  
+   Los ajustes de <link linkend="reference.pcre.pattern.modifiers">PCRE_CASELESS</link>,
+   <link linkend="reference.pcre.pattern.modifiers">PCRE_MULTILINE</link>,
    <link linkend="reference.pcre.pattern.modifiers">PCRE_DOTALL</link>,
    <link linkend="reference.pcre.pattern.modifiers">PCRE_UNGREEDY</link>,
    <link linkend="reference.pcre.pattern.modifiers">PCRE_EXTRA</link>,
@@ -1320,7 +1324,7 @@
    y PCRE_DUPNAMES se pueden cambiar desde dentro de un patrón por
    una secuencia de letras de opciones de Perl encerradas entre "(?" y
    ")". Las letras de opciones son:
-   
+
    <table>
     <title>Letras de opciones internas</title>
     <tgroup cols="2">
@@ -1347,7 +1351,7 @@
       </row>
       <row>
        <entry><literal>X</literal></entry>
-       <entry>para <link linkend="reference.pcre.pattern.modifiers">PCRE_EXTRA</link> (ya no es compatible en PHP 7.3.0)</entry>
+       <entry>para <link linkend="reference.pcre.pattern.modifiers">PCRE_EXTRA</link> (ya no es compatible a partir de PHP 7.3.0)</entry>
       </row>
       <row>
        <entry><literal>J</literal></entry>
@@ -1381,26 +1385,26 @@
    es diferente. Esto es un cambio de comportamiento en Perl 5.005.
    Un cambio de opción dentro de un sub-patrón afecta sólo a aquella parte
    del sub-patrón que le sigue, por lo que
-   
+
    <literal>(a(?i)b)c</literal>
-   
-   coincide con abc y aBc y ninguna otra cadena más (asumiendo que no se usa
+
+   coincide con abc y aBc y ninguna otro &string; más (asumiendo que no se usa
    <link linkend="reference.pcre.pattern.modifiers">PCRE_CASELESS</link>).
    Por medio de esto, las opciones pueden ser producidas para tener diferentes ajustes en
    diferentes partes del patrón. Cualquier cambio hecho en un alternativa
    continúa en ramas subsiguientes dentro del mismo sub-patrón. Por
    ejemplo,
-   
+
    <literal>(a(?i)b|c)</literal>
-   
+
    coincide con "ab", "aB", "c", y "C", incluso cuando al coincidir con
    "C" la primera rama es abandonada después de establecer la opción.
    Esto es porque los efectos del establecimiento de opciones ocurren en
    tiempo de compilación. De otro modo habría algunos comportamiento extraños.
   </para>
   <para>
-   Las opciones específicas de PCRE <link 
-   linkend="reference.pcre.pattern.modifiers">PCRE_UNGREEDY</link> y  
+   Las opciones específicas de PCRE <link
+   linkend="reference.pcre.pattern.modifiers">PCRE_UNGREEDY</link> y
    <link linkend="reference.pcre.pattern.modifiers">PCRE_EXTRA</link> se pueden
    cambiar de la misma forma que las opciones compatibles con Perl
    usando los caracteres U y X respectivamente. La bandera
@@ -1409,7 +1413,7 @@
    incluso si está en el nivel superior. Lo mejor es ponerlo al principio.
   </para>
  </section>
- 
+
  <section xml:id="regexp.reference.subpatterns">
   <title>Sub-patrones</title>
   <para>
@@ -1423,13 +1427,13 @@
      Localiza un conjunto de alternativas. Por ejemplo, el
      patrón <literal>cata(rata|pulta|)</literal> coincide con una de las palabras "cata",
      "catarata", o "catapulta". Sin los paréntesis, coincidiría con "catarata",
-     "pulta" o la cadena vacía.
+     "pulta" o el &string; vacío.
     </para>
    </listitem>
    <listitem>
     <para>
      Establece el sub-patrón como un sub-patrón de captura (como se definió antes).
-     Cuando el patrón completo coincide, esa porción de la cadena objetivo
+     Cuando el patrón completo coincide, esa porción del &string; objetivo
      que coincidió con el sub-patrón es devuelta la llamador mediante
      el argumento <emphasis>ovector</emphasis> de <function>pcre_exec</function>.
      Los paréntesis de apertura se cuentan de izquierda a derecha (comenzando por 1) para
@@ -1438,11 +1442,11 @@
    </listitem>
   </orderedlist>
   <para>
-   Por ejemplo, si la cadena "el rojo amanecer" se compara con
+   Por ejemplo, si el &string; "el rojo amanecer" se compara con
    el patrón
-   
+
    <literal>el ((rojo|oscuro) (amanecer|atarceder))</literal>
-   
+
    las cadenas capturadas son "rojo amanecer", "rojo", y "amanecer",
    y son numeradas como 1, 2, y 3.
   </para>
@@ -1453,11 +1457,11 @@
    paréntesis de apertura es seguido por "?:", el sub-patrón no
    realiza ninguna captura, y no es contado cuando se computa el
    número de cualquier sub-patrón de captura subsiguiente. Por ejemplo,
-   si la cadena "el oscuro atardecer" se compara con el
+   si el &string; "el oscuro atardecer" se compara con el
    patrón
-   
+
    <literal>the ((?:rojo|oscuro) (amanecer|atarceder))</literal>
-   
+
    las subcadenas capturadas son "oscuro atardecer" y "atarceder", y
    son numeradas como 1 y 2. El número máximo de subcadenas capturadas
    es de 65535. Sin embargo, podría no ser posible compilar patrones tan grandes,
@@ -1469,7 +1473,7 @@
    letras de opciones pueden aparecen entre el "?" y ":". Así
    lo dos patrones
   </para>
-  
+
   <informalexample>
    <programlisting>
 <![CDATA[
@@ -1478,7 +1482,7 @@
 ]]>
    </programlisting>
   </informalexample>
-  
+
   <para>
    coinciden exactamente con el mismo conjunto de cadenas. Dado que las ramas
    alternativas son probadas de izquierda a derecha, y las opciones no
@@ -1486,55 +1490,55 @@
    de una opción en una rama afecta a las ramas siguientes, por lo que
    los patrones de arriba coinciden tanto con "MARTES" como con "Lunes".
   </para>
-  
+
   <para>
    Es posible nombrar un sub-patrón usando la sintaxis
    <literal>(?P&lt;nombre&gt;patrón)</literal>. Este sub-patrón será entonces
    indexado en el array de coincidencias mediante su posición numérica normal y
-   mediante su nombre también. PHP 5.2.2 introdujo dos sintaxis alternativas
+   mediante su nombre también. Hay dos sintaxis alternativas
    <literal>(?&lt;nombre&gt;patrón)</literal> y <literal>(?'nombre'patrón)</literal>.
   </para>
-  
+
   <para>
    A veces es necesario tener múltiples coincidencias, pero alternando
    subgrupos en una expresión regular. Normalmente, a cada subgrupo se le asignaría
    su propio número de retroreferencia incluso si sólo uno de ellos coincidiera.
    Para superar esto, la sintaxis <literal>(?|</literal> permite
-   tener números duplicados. Considere la siguiente expresión regular comparada con la
-   cadena <literal>Sunday</literal>:
+   tener números duplicados. Considere la siguiente expresión regular comparada con el
+   &string; <literal>Sunday</literal>:
   </para>
-  
+
   <informalexample>
    <programlisting>
 <![CDATA[(?:(Sat)ur|(Sun))day]]>
    </programlisting>
   </informalexample>
-  
+
   <para>
    Aquí <literal>Sun</literal> se guarda en la retroreferencia 2, mientras
    que la retroreferencia 1 está vacía. La comparación cede <literal>Sat</literal> a la
    retroreferncia 1 mientras que la retroreferncia 2 no existe. Cambiar el patrón
    para usar <literal>(?|</literal> corrige este problema:
   </para>
-  
+
   <informalexample>
    <programlisting>
 <![CDATA[(?|(Sat)ur|(Sun))day]]>
    </programlisting>
   </informalexample>
-  
+
   <para>
    Al usar este patrón, tanto <literal>Sun</literal> como <literal>Sat</literal>
    serían almacenados en la retroreferencia 1.
   </para>
  </section>
- 
+
  <section xml:id="regexp.reference.repetition">
   <title>Repetición</title>
   <para>
    La repetición se especifica mediante cuantificadores, los cuales pueden ir detrás
    de cualquiera de los siguientes elementos:
-   
+
    <itemizedlist>
     <listitem><simpara>un único carácter, posiblemente escapado</simpara></listitem>
     <listitem><simpara>el metacarácter . (punto)</simpara></listitem>
@@ -1550,28 +1554,39 @@
    números entre llaves, separados por una coma.
    Los números deben ser menores que 65536, y el primero debe ser
    menor o igual que el segundo. Por ejemplo:
-   
+
    <literal>z{2,4}</literal>
-   
+
    coincide con "zz", "zzz", o "zzzz". Una llave de cierre por sí misma
    no es un carácter especial. Si se omite el segundo número,
    pero la coma está presente, no hay límite superior; si el
    segundo número y la coma se omiten, el cuantificador
    especifica un número exacto de coincidencias requeridas. Así
-   
+
    <literal>[aeiou]{3,}</literal>
-   
+
    coincide al menos con 3 vocales sucesivas, pero puede coincidir con
    muchas más, mientras que
-   
+
    <literal>\d{8}</literal>
+
+   coincide exactamente con 8 dígitos.
    
-   coincide exactamente con 8 dígitos. Una llave que
-   aparezca en una posición donde no se permite un cuantificador, o
-   una que no coincida con la sintaxis de un cuantificador, se toma
-   como un carácter literal. Por ejemplo, {,6} no es un cuantificador,
-   sino una cadena literal de cuatro caracteres.
   </para>
+  <simpara>
+   Antes de PHP 8.4.0, una llave de apertura que
+   aparece en una posición donde no se permite un cuantificador, o
+   una que no coincide con la sintaxis de un cuantificador, se interpreta
+   como un carácter literal. Por ejemplo, <literal>{,6}</literal>
+   no es un cuantificador, sino un &string; literal de cuatro caracteres.
+   
+   A partir de PHP 8.4.0, la extensión PCRE se incluye con PCRE2 versión 10.44,
+   lo que permite patrones como <literal>\d{,8}</literal>, que se
+   interpretan como <literal>\d{0,8}</literal>.
+
+   Además, a partir de PHP 8.4.0, se permiten caracteres de espacio alrededor de los cuantificadores,
+   como en <literal>\d{0 , 8}</literal> y <literal>\d{ 0 , 8 }</literal>.
+  </simpara>
   <para>
    El cuantificador {0} está permitido, lo que provoca que la expresión se
    comporte como si el elemento anterior y el cuantificador no estuvieran
@@ -1580,7 +1595,7 @@
   <para>
    Por conveniencia (y compatibilidad histórica) los tres
    cuantificadores más comunes tiene como abreviatura un carácter simple:
-   
+
    <table>
     <title>Cuantificadores de carácter simple</title>
     <tgroup cols="2">
@@ -1605,7 +1620,7 @@
    Es posible construir bucles infinitos mediante un
    sub-patrón que pueda no coincidir con caracteres, seguido de un cuantificador
    que no tenga límite superior, por ejemplo:
-   
+
    <literal>(a?)*</literal>
   </para>
   <para>
@@ -1624,37 +1639,37 @@
    las secuencias /* y */ y dentro de la secuencia, pueden aparecer
    caracteres * y / individuales. Un intento de coincidir comentarios en C
    aplicando el patrón
-   
+
    <literal>/\*.*\*/</literal>
-   
-   a la cadena
-   
+
+   a el &string;
+
    <literal>/* primer comentario */  no comentado  /* segundo comentario */</literal>
-   
-   falla, ya que coincide con la cadena completa debido a
+
+   falla, ya que coincide con el &string; completo debido a
    que el elemento .* es codicioso.
   </para>
   <para>
    Sin embargo, si un cuantificador es seguido por un signo de interrogación,
    entonces se convierte en perezoso, coincidiendo el mínimo número
    de veces posible, así el patrón
-   
+
    <literal>/\*.*?\*/</literal>
-   
+
    funciona de forma correcta con los comentarios en C. Por lo demás,
    el significado de los diferentes cuantificadores no varía, sólo el número
    de coincidencias preferidas. No confunda este uso del
    signo de interrogación con su uso como un cuantificador por derecho propio.
    Ya que tiene dos usos, puede aparecer a veces doble, como
    en
-   
+
    <literal>\d??\d</literal>
-   
+
    que coincide con un dígito preferentemente, pero puede coincidir con dos si
    esa es la única manera de que el resto del patrón coincida.
   </para>
   <para>
-   Si la opción <link linkend="reference.pcre.pattern.modifiers">PCRE_UNGREEDY</link>  
+   Si la opción <link linkend="reference.pcre.pattern.modifiers">PCRE_UNGREEDY</link>
    se establece (una opción que no está
    disponible en Perl), los cuantificadores no son codiciosos por
    defecto, pero puede hecérselos codiciosos si les sigue
@@ -1665,8 +1680,8 @@
    Los cuantificadores seguidos de <literal>+</literal> son "posesivos". Consumen
    tantos caracteres como les es posible y no retornan para coincidir con el resto del
    patrón. Así, <literal>.*abc</literal> coincide con "aabc" pero
-   <literal>.*+abc</literal> no, ya que <literal>.*+</literal> consume la
-   cadena entera. Se pueden usar los cuantificadores posesivos
+   <literal>.*+abc</literal> no, ya que <literal>.*+</literal> consume el
+   &string; entero. Se pueden usar los cuantificadores posesivos
    para acelerar el procesamiento.
   </para>
   <para>
@@ -1676,16 +1691,16 @@
    proporción al tamaño del mínimo o máximo.
   </para>
   <para>
-   Si un patrón comienza con .* o .{0,} y la opción <link 
-   linkend="reference.pcre.pattern.modifiers">PCRE_DOTALL</link> 
+   Si un patrón comienza con .* o .{0,} y la opción <link
+   linkend="reference.pcre.pattern.modifiers">PCRE_DOTALL</link>
    (equivalente a la de Perl /s) está establecida, así permitiendo al . (punto)
    coincidir con nuevas líneas, entonces el patrón está implícitamente anclado,
    ya que cualquier cosa que haya a continuación se seguirá intentando comparar
-   con cada posición de carácter en la cadena objetivo, por lo que no sirve de nada
+   con cada posición de carácter en el &string; objetivo, por lo que no sirve de nada
    volver a intentar la comparación completa desde cualquier posición después de la primera.
    PCRE trata estos patrones como si estuvieran precedidos por \A.
-   En los casos donde se sabe que la cadena objetivo no contiene
-   nuevas líneas, vale la pena establecer <link 
+   En los casos donde se sabe que el &string; objetivo no contiene
+   nuevas líneas, vale la pena establecer <link
    linkend="reference.pcre.pattern.modifiers">PCRE_DOTALL</link> cuando el
    patrón comienza con .* para
    obtener esta optimización, o
@@ -1694,22 +1709,22 @@
   <para>
    Cuando se repite un sub-patrón de captura, el valor capturado
    es la subcadena que coincide con la iteración final. Por ejemplo, después de que
-   
+
    <literal>(tweedle[dume]{3}\s*)+</literal>
-   
+
    se haya comparado con "tweedledum tweedledee" el valor del sub-patrón de
    captura es "tweedledee". Sin embargo, si hay sub-patrones de captura
    anidados, los valores capturados correspondientes
    pueden haber sido establecidos en iteraciones previas. Por ejemplo,
    después de que
-   
+
    <literal>/(a|(b))+/</literal>
-   
+
    se compare con "aba", el valor del segundo sub-patrón de captura es
    "b".
   </para>
  </section>
- 
+
  <section xml:id="regexp.reference.back-references">
   <title>Retroreferencias</title>
   <para>
@@ -1734,18 +1749,18 @@
   </para>
   <para>
    Una retroreferencia coincide con cualquier cosa que en realidad haya coincidido
-   con el sub-patrón de captura en la cadena objetivo actual, más que con
+   con el sub-patrón de captura en el &string; objetivo actual, más que con
    cualquier cosa que coincida en el sub-patrón mismo. Así, el patrón
-   
+
    <literal>(abraz|apreci)o de un \1ador</literal>
-   
+
    coindice con "abrazo de un abrazador" y con "aprecio de un apreciador",
    pero no con "abrazo de un apreciador". Si la coincidencia sensible a
    mayúsculas-minúsculas está en vigor en el momento de la retroreferencia,
    la distinción de letras es relevante. Por ejemplo,
-   
+
    <literal>((?i)bla)\s+\1</literal>
-   
+
    coincide con "bla bla" y "BLA BLA", pero no con "BLA bla", incluso
    si el patrón de captura original es comparado de forma insensible a
    mayúsculas-minúsculas.
@@ -1755,15 +1770,15 @@
    Si un sub-patrón no ha sido usado en realidad en una
    coincidencia en particular, cualquier retroreferencia a él siempre
    falla. Por ejemplo, el patrón
-   
+
    <literal>(a|(bc))\2</literal>
-   
+
    siempre falla si comienza coincidiendo con "a" en vez de con "bc".
    Ya que puede haber hasta 99 retroreferencias, todos los dígitos
    que siguen a la barra invertida se toman como parte de un número
    posible de retroreferencias. Si el patrón continúa con un carácter
    dígito, entonces se deben usar algunos delimitadores para finalizar la
-   retroreferencia. Si la opción <link 
+   retroreferencia. Si la opción <link
    linkend="reference.pcre.pattern.modifiers">PCRE_EXTENDED</link> está
    establecida, éste puede ser un espacio en blanco. De otra manera se puede usar un comentario vacío.
   </para>
@@ -1772,19 +1787,19 @@
    se refiere, falla cuando el sub-patrón se usa primero, así, por
    ejemplo, (a\1) nunca coincide. Sin embargo, tales referencias pueden
    ser útiles dentro de sub-patrones repetidos. Por ejemplo, el patrón
-   
+
    <literal>(a|b\1)+</literal>
-   
+
    coincide con cualquier número de "a"es y tambíen con "aba", "ababba", etc. En
    cada iteración del subpatrón, la retroreferencia coincide con
-   el cadena correspondiente a la iteración anterior.
+   el &string; correspondiente a la iteración anterior.
    Para que esto funcione, el patrón debe ser tal
    que la primera iteración no necesite coincidir con la retroreferencia.
    Esto se puede lograr usando alternancia, como en el
    ejemplo anterior, o mediante un cuantificador con un mínimo de cero.
   </para>
   <para>
-   A partir de PHP 5.2.2, la secuencia de escape <literal>\g</literal> se puede
+   La secuencia de escape <literal>\g</literal> se puede
    usar para referenciar subpatrones de forma absoluta y relativa.
    Esta secuencia de escape debe estar seguida por un número sin signo o un número
    negativo, opcionalmente encerrado entre llaves. Las secuencias <literal>\1</literal>,
@@ -1805,14 +1820,13 @@
   </para>
   <para>
    Las retroreferencias a sub-patrones nominados se pueden lograr mediante
-   <literal>(?P=nombre)</literal> o, desde PHP 5.2.2, también mediante
-   <literal>\k&lt;nombre&gt;</literal> o <literal>\k'nombre'</literal>.
-   Además, PHP 5.2.4 añadió soporte para <literal>\k{nombre}</literal>
-   y <literal>\g{nombre}</literal>, y PHP 5.2.7 para
-   <literal>\g&lt;name&gt;</literal> y <literal>\g'name'</literal>.
+   <literal>(?P=name)</literal>,
+   <literal>\k&lt;name&gt;</literal>, <literal>\k'name'</literal>,
+   <literal>\k{name}</literal>, <literal>\g{name}</literal>,
+   <literal>\g&lt;name&gt;</literal> o <literal>\g'name'</literal>.
   </para>
  </section>
- 
+
  <section xml:id="regexp.reference.assertions">
   <title>Declaraciones</title>
   <para>
@@ -1821,27 +1835,27 @@
    consumen carácter alguno. Las declaraciones simples codificadas como \b,
    \B, \A, \Z, \z, ^ y $ están descritas en <link linkend="regexp.reference.escape">secuencias de escape</link>. Las declaraciones
    más complicadas están codificadas como sub-patrones. Hay dos tipos:
-   aquéllas que <emphasis>buscan hacia delante</emphasis> desde punto actual de la
-   cadena objetivo, y aquéllas que <emphasis>buscan hacia atrás</emphasis> desde él.
+   aquéllas que <emphasis>buscan hacia delante</emphasis> desde punto actual del
+   &string; objetivo, y aquéllas que <emphasis>buscan hacia atrás</emphasis> desde él.
   </para>
   <para>
    Un patrón declaración es comparado de la forma habitual, excepto
    que no causa que la posición actual de coincidencia
    cambie. Las declaraciones de <emphasis>búsqueda hacia delante</emphasis> comienzan con
    (?= para declaraciones positivas y con (?! para declaraciones negativas. Por ejemplo,
-   
+
    <literal>\w+(?=;)</literal>
-   
+
    coincide con una palabra seguida de un punto y coma, pero no incluye
    el punto y coma en la coincidencia, y
-   
+
    <literal>foo(?!bar)</literal>
-   
+
    coincide con cualquier incidencia de "foo" que no esté seguida de
    "bar". Observe que el patrón aparentemente similar
-   
+
    <literal>(?!foo)bar</literal>
-   
+
    no encuentra una incidencia de "bar" que esté precedida por
    algo distinto de "foo"; no encuentra ninguna incidencia de "bar"
    en absoluto, ya que la declaración (?!foo) es siempre &true;
@@ -1851,35 +1865,35 @@
   <para>
    Las declaraciones de <emphasis>búsqueda hacia atrás</emphasis> comienzan con (?&lt;=
    para declaraciones positivas y con (?&lt;! para declaraciones negativas. Por ejemplo,
-   
+
    <literal>(?&lt;!foo)bar</literal>
-   
+
    encuentra una incidencia de "bar" que no esté precedida por
    "foo". El contenido de una declaración de búsqueda hacia atrás está restringido
    de tal manera que todas las cadenas que se comparen con ella deben tener una longitud
    fija. Sin embargo, si hay varias alternativas, no es necesario que
    tengan todas la misma longitud fija. Así,
-   
+
    <literal>(?&lt;=buey|burro)</literal>
-   
+
    está permitido, pero
-   
+
    <literal>(?&lt;!toros?|vacas?)</literal>
-   
+
    produce un error en tiempo de compilación. Las ramas que se comparan con cadenas
    de diferente longitud están permitidas sólo en el nivel superior de
    una declaración de búsqueda hacia atrás. Esto es una extensión comparado con
    Perl 5.005, la cual requiere que todas las ramas a comparar tengan la misma
-   longitud de cadena. Una declaración como
-   
+   longitud de &string;. Una declaración como
+
    <literal>(?&lt;=ab(c|de))</literal>
-   
+
    no está permitida porque su rama del nivel superior puede
    coincidir con dos longitudes diferentes, pero es aceptable si se reescribe
    para usar dos ramas del nivel superior:
-   
+
    <literal>(?&lt;=abc|abde)</literal>
-   
+
    La implementación de las declaraciones de búsqueda hacia atrás es, para cada
    alternativa, retroceder temporalmente la posición actual
    por el ancho fijo y después intentar coincidir. Si no hay
@@ -1892,19 +1906,19 @@
   <para>
    Varias declaraciones (de cualquier tipo) pueden producirse en suceción.
    Por ejemplo,
-   
+
    <literal>(?&lt;=\d{3})(?&lt;!999)foo</literal>
-   
+
    coincide con "foo" precedido de tres dígitos que no sean "999".
    Nótese que cada una de las declaraciones es aplicada
-   en el mismo punto de la cadena objetivo. Primero, se
+   en el mismo punto de el &string; objetivo. Primero, se
    verifica que los tres caracteres previos son todos dígitos,
    depués se verifica que esos mismos tres caracteres no sean
    "999". Este patrón no coincide con "foo" precedido de seis
    caracteres, los primeros de los cuales son dígitos y los tres últimos
    de éllos no son "999". Por ejemplo, no coincide con
    "123abcfoo". Un patrón que hace eso es
-   
+
    <literal>(?&lt;=\d{3}...)(?&lt;!999)foo</literal>
   </para>
   <para>
@@ -1915,14 +1929,14 @@
   </para>
   <para>
    Las declaraciones pueden estar anidadas en cualquier combianción. Por ejemplo,
-   
+
    <literal>(?&lt;=(?&lt;!foo)bar)baz</literal>
-   
+
    coincide con una incidencia de "baz" que está precedida por "bar",
    la cual a su vez no está precedida por "foo", mientras que
-   
+
    <literal>(?&lt;=\d{3}...(?&lt;!999))foo</literal>
-   
+
    es otro patrón que coincide con "foo" precedido por tres
    dígitos y otros tres caracteres cualesquiera que no sean "999".
   </para>
@@ -1941,7 +1955,7 @@
    entre paréntesis.
   </para>
  </section>
- 
+
  <section xml:id="regexp.reference.onlyonce">
   <title>Sub-patrones de una sóla aplicación</title>
   <para>
@@ -1956,7 +1970,7 @@
   <para>
    Considere, por ejemplo, el patrón \d+foo cuando se aplica a
    la línea objetivo
-   
+
    <literal>123456bar</literal>
   </para>
   <para>
@@ -1969,7 +1983,7 @@
    comparador se rendirá inmediatamente al fallar la comparación de "foo"
    la primera vez. La notación es otro tipo de paréntesis
    especiales, comenzando con (?&gt; como en este ejemplo:
-   
+
    <literal>(?&gt;\d+)bar</literal>
   </para>
   <para>
@@ -1980,9 +1994,9 @@
   </para>
   <para>
    Una descripción alternativa es que un sub-patrón de este tipo
-   coincide con la cadena de caracteres que coincidiría con un patrón
+   coincide con  el &string; de caracteres que coincidiría con un patrón
    idéntico independiente, si está anclado en el punto actual
-   de la cadena objetivo.
+   de el &string; objetivo.
   </para>
   <para>
    Los sub-patrones de una sóla aplicación no son sub-patrones de captura. Los casos
@@ -1999,28 +2013,28 @@
   <para>
    Los sub-patrones de una sóla aplicación se pueden usar junto con
    declaraciones de búsqueda hacia atrás para especificar una comparación eficiente
-   al final de la cadena objetivo. Considere un simple patrón como
-   
+   al final del &string; objetivo. Considere un simple patrón como
+
    <literal>abcd$</literal>
-   
-   cuando se aplica a una cadena larga la cual no coincide. Ya que
+
+   cuando se aplica a un &string; largo el cual no coincide. Ya que
    la comparación se lleva a cabo de izquierda a derecha, PCRE buscará
    cada "a" en el sujeto y después mirará si lo siguiente coincide con el
    resto del patrón. Si el patrón se especifica así
-   
+
    <literal>^.*abcd$</literal>
-   
-   el .* inicial coincide con la cadena entera primero, pero
+
+   el .* inicial coincide con el &string; entero primero, pero
    cuando esto falla (debido a que no hay una "a" siguiente),
    retrocede para comparar todos los caracteres excepto el último, después todos
    excepto los dos últimos, y así sucesivamente. Una vez más la búsqueda
-   de "a" cubre la cadena entera, de derecha a izquierda, por lo que
+   de "a" cubre el &string; entero, de derecha a izquierda, por lo que
    no estamos en mejores circunstancias. Sin embargo, si el patrón se escribe así
-   
+
    <literal>^(?>.*)(?&lt;=abcd)</literal>
-   
+
    entonces no puede haber retroceso para el elemento .* ; sólo puede
-   coincidir con la cadena entera. La subsiguiente declaración de búsqueda
+   coincidir con el &string; entero. La subsiguiente declaración de búsqueda
    hacia atrás realiza una única comprobación sobre los últimos cuatro caracteres. Si
    falla, la comparación falla inmediatamente. Para cadenas largas,
    este enfoque produce una diferencia significativa en el tiempo de procesamiento.
@@ -2031,32 +2045,32 @@
    el uso de un sub-patrón de una sóla aplicación es la única manera de
    evitar que algunas comparaciones fallidas tomen mucho tiempo.
    El patrón
-   
+
    <literal>(\D+|&lt;\d+>)*[!?]</literal>
-   
+
    compara un número ilimitado de subcadenas que consisten
    en algo que no sea un dígito, o dígitos encerrados entre &lt;>, seguido de
    ! o ?. Cuando coincide, se ejecuta rápidamente. Sin embargo, si
    se aplica a
-   
+
    <literal>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</literal>
-   
+
    toma mucho tiempo antes de informar del fallo. Esto es
-   porque la cadena puede ser dividida entre las dos repeticiones de
+   porque el &string; puede ser dividido entre las dos repeticiones de
    muchas maneras, y todo tiene que ser probado. (En el ejemplo
    se usó [!?] en vez de un carácter único al final,
    ya que PCRE y Perl están optimizados de forma que permiten
    que se falle rápidamente cuando se usa un carácter único. Ambos
    recuerdan el último carácter único que se requiere para una
-   coincidencia, y falla antes si no está presente en la cadena.)
+   coincidencia, y falla antes si no está presente en el &string;.)
    Si el patrón se cambia a
-   
+
    <literal>((?>\D+)|&lt;\d+>)*[!?]</literal>
-   
+
    las secuencias de los "no-dígitos" no pueden romperse, y el fallo ocurre rápidamente.
   </para>
  </section>
- 
+
  <section xml:id="regexp.reference.conditional">
   <title>Sub-patrones condicionales</title>
   <para>
@@ -2066,7 +2080,7 @@
    de si un sub-patrón de captura previo coincidió o no. Las
    dos formas posibles de un sub-patrón condicional son
   </para>
-  
+
   <informalexample>
    <programlisting>
 <![CDATA[
@@ -2087,7 +2101,7 @@
    condición es satisfecha si el sub-patrón de captura de ese
    número ha coincidido anteriormente. Considere el siguiente patrón,
    el cual contiene espacios en blanco no significativos para hacerlo
-   más legible (se asume la opción <link 
+   más legible (se asume la opción <link
    linkend="reference.pcre.pattern.modifiers">PCRE_EXTENDED</link>)
    y para dividirlo en tres partes para facilitar su análisis:
   </para>
@@ -2113,7 +2127,7 @@
    entre paréntesis.
   </para>
   <para>
-   Si la condición es la cadena <literal>(R)</literal>, se satisface si
+   Si la condición es el &string; <literal>(R)</literal>, se satisface si
    ha sido hecha una llamada recursiva al patrón o sub-patrón. En el "nivel
    superior", la condición es falsa.
   </para>
@@ -2124,7 +2138,7 @@
    espacios en blanco no significativos, y con dos alternativas en la segunda
    línea:
   </para>
-  
+
   <informalexample>
    <programlisting>
 <![CDATA[
@@ -2144,7 +2158,7 @@
    letras y dd son dígitos.
   </para>
  </section>
- 
+
  <section xml:id="regexp.reference.comments">
   <title>Comentarios</title>
   <para>
@@ -2154,36 +2168,71 @@
    comentario no toman parte a la hora de una comparación del patrón.
   </para>
   <para>
-   Si la opción <link linkend="reference.pcre.pattern.modifiers">PCRE_EXTENDED</link>  
+   Si la opción <link linkend="reference.pcre.pattern.modifiers">PCRE_EXTENDED</link>
    está establecida, un carácter # sin escapar fuera de una clase carácter
    inicia un comentario que continúa hasta el siguiente carácter de nueva línea
    del patrón.
   </para>
+  <para>
+   <example>
+    <title>Usage of comments in PCRE pattern</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+
+$subject = 'test';
+
+/* (?# puede ser utilizado para añadir comentarios sin habilitar PCRE_EXTENDED */
+$match = preg_match('/te(?# esto es un comentario)st/', $subject);
+var_dump($match);
+
+/* Los espacios en blanco y el carácter # se tratan como parte del patrón a menos que PCRE_EXTENDED esté habilitado */
+$match = preg_match('/te   #~~~~
+st/', $subject);
+var_dump($match);
+
+/* Cuando PCRE_EXTENDED está habilitado, todos los caracteres de espacio en blanco y cualquier cosa
+   que siga a un carácter # no escapado en la misma línea se ignoran */
+$match = preg_match('/te    #~~~~
+st/x', $subject);
+var_dump($match);
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen>
+<![CDATA[
+int(1)
+int(0)
+int(1)
+]]>
+    </screen>
+   </example>
+  </para>
  </section>
- 
+
  <section xml:id="regexp.reference.recursive">
   <title>Patrones recursivos</title>
   <para>
-   Considere el problema de comparar una cadena entre paréntesis,
+   Considere el problema de comparar un &string; entre paréntesis,
    permitiendo paréntesis anidados ilimitados. Sin el uso de
    la recursividad, lo mejor que se puede hacer es usar un patrón
    que compare hasta alguna profundidad fija de anidamiento. No es
    posible manejar una profundidad de anidamiento arbitraria. Perl 5.6 ha
    proporcionado una herramienta experimental que permite a las expresiones
    regulares actuar recursivamente (entre otras cosas). El elemento
-   especial (?R) es proporcionado para el caso específico de la recursividad. 
+   especial (?R) es proporcionado para el caso específico de la recursividad.
    Este patrón de PCRE soluciona el problema de los paréntesis (se asume que la
    opción <link linkend="reference.pcre.pattern.modifiers">PCRE_EXTENDED</link>
    está establecida por lo que los espacios en blanco se
    ignoran):
-   
+
    <literal>\( ( (?>[^()]+) | (?R) )* \)</literal>
   </para>
   <para>
    Primero se compara un paréntesis de apertura. Después compara cualquier
    número de subcadenas que pueden ser tanto una secuencia de algo que no sean
    paréntesis como una comparación recursiva del patrón mismo
-   (esto es, una subcadena con los paréntesis correctos). Finalmente hay
+   (esto es, un substring con los paréntesis correctos). Finalmente hay
    un paréntesis de cierre.
   </para>
   <para>
@@ -2192,10 +2241,10 @@
    cadenas que no contengan paréntesis es importante cuando se aplica
    el patrón a cadenas que no coinciden. Por ejemplo, cuando
    se aplica a
-   
+
    <literal>(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()</literal>
-   
-   produce "no hay conicidencias" rápidamente. Sin embargo, si no se usa un sub-patrón 
+
+   produce "no hay conicidencias" rápidamente. Sin embargo, si no se usa un sub-patrón
    de una sóla aplicación, la comparación se ejecuta realmente durante
    mucho tiempo ya que hay muchas maneras diferentes de que las repeticiones + y *
    se puedan repartir el sujeto, y todas tienen que ser comprobadas
@@ -2205,15 +2254,15 @@
    El conjunto de valores para cualquier sub-patrón de captura son aquellos del
    nivel último de la recursión en el cual el valor del sub-patrón
    es establecido. Si el patrón anterior se compara con
-   
+
    <literal>(ab(cd)ef)</literal>
-   
+
    el valor del paréntesis de captura es "ef", el cual es
    el último valor tomado en el nivel superior. Si se añaden
    paréntesis adicionales, dando lugar a
-   
+
    <literal>\( ( ( (?>[^()]+) | (?R) )* ) \)</literal>
-   entonces la cadena que capturan
+   entonces el &string; que capturan
    es "ab(cd)ef", el contenido de los paréntesis del nivel superior. Si
    hay más de 15 paréntesis de captura en un patrón,
    PCRE ha de obtener memoria extra para almacenar la información durante una
@@ -2223,11 +2272,11 @@
    no hay manera de otorgar un error "out-of-memory" desde dentro de una
    recursión.
   </para>
-  
+
   <para>
    Se puede usar también <literal>(?1)</literal>, <literal>(?2)</literal>
-   y así sucesivamente, para los sub-patrones recursivos. Tamién es posible usar sub-patrones
-   nominados: <literal>(?P&gt;nombre)</literal> o 
+   y así sucesivamente, para los sub-patrones recursivos. También es posible usar sub-patrones
+   con nombre: <literal>(?P&gt;nombre)</literal> o
    <literal>(?&amp;nombre)</literal>.
   </para>
   <para>
@@ -2243,17 +2292,17 @@
    dos cadenas. Tales referencias deben, sin embargo, seguir al sub-patrón al
    que hacen referencia.
   </para>
-  
+
   <para>
-   La longitud máxima de una cadena objetivo es el número positivo más grande
+   La longitud máxima de un &string; objetivo es el número positivo más grande
    que una variable tipo integer pueda tener. Sin embargo, PCRE usa la recursividad para
    tratar sub-patrones y repetición indefinida. Esto significa que el espacio
-   de pila disponible puede limitar el tamaño de una cadena objetivo que puede ser
+   de pila disponible puede limitar el tamaño de un &string; objetivo que puede ser
    procesada por ciertos patrones.
   </para>
-  
+
  </section>
- 
+
  <section xml:id="regexp.reference.performance">
   <title>Rendimiento</title>
   <para>
@@ -2266,19 +2315,19 @@
    expresiones regulares para un rendimiento eficiente.
   </para>
   <para>
-   Cuando un patrón comienza con .* y la opción <link 
+   Cuando un patrón comienza con .* y la opción <link
    linkend="reference.pcre.pattern.modifiers">PCRE_DOTALL</link> está
    establecida, el patrón es anclado implícitamente por PCRE, ya que
-   sólo puede coincidir con el inicio de una cadena objetivo. Sin embargo, si
-   <link linkend="reference.pcre.pattern.modifiers">PCRE_DOTALL</link>   
+   sólo puede coincidir con el inicio de un &string; objetivo. Sin embargo, si
+   <link linkend="reference.pcre.pattern.modifiers">PCRE_DOTALL</link>
    no está establecido, PCRE no puede realizar esta optimización,
    ya que el metacarácter . no coincide entonces con una nueva línea,
-   y si la cadena objetivo contine nuevas líneas, el patrón puede
+   y si el &string; objetivo contine nuevas líneas, el patrón puede
    coincidir con el carácter inmediatemente siguiente a ellas
    en vez de con el inicio absoluto. Por ejemplo, el patrón
-   
+
    <literal>(.*) segundo</literal>
-   
+
    coincide con el sujeto "primero\ny segundo" (donde \n significa
    un carácter de nueva línea), siendo "y" la primera subcadena capturada.
    Para llevar a cabo esto, PCRE ha de re-intentar la comparación
@@ -2296,12 +2345,12 @@
    Tenga cuidado con los patrones que contienen repeticiones anidadas indefinidas.
    Éstos pueden tomar mucho tiempo al ejecutarse cuando se aplican a cadenas
    que no coinciden. Considere el fragmento de patrón
-   
+
    <literal>(a+)*</literal>
   </para>
   <para>
    Esto puede coincidir con "aaaa" de 33 maneras diferentes, y este número
-   se incrementa muy rápidamente mientras la cadena se hace más larga. (La
+   se incrementa muy rápidamente mientras el &string; se hace más largo. (La
    repetición * puede coincidir 0, 1, 2, 3, o 4 veces, y para cada uno de
    estos casos distintos de 0, las repeticiones de + pueden coincidir diferente
    número de veces.) Cuando el resto del patrón es tal
@@ -2311,18 +2360,18 @@
   </para>
   <para>
    Una optimización toma algunos de los casos más simples como
-   
+
    <literal>(a+)*b</literal>
-   
+
    donde sigue un carácter literal. Antes de emprender el
    procedimiento de comparación estándar, PCRE verifica que hay una "b"
-   posterior en la cadena objetivo, y si no la hay, falla
+   posterior en  el &string; objetivo, y si no la hay, falla
    la comparación inmediatamente. Sin embargo, cuando no hay un literal
    siguiente, no se puede usar esta optimización. Puede ver la
    diferencia comparando el comportamiento de
-   
+
    <literal>(a+)*\d</literal>
-   
+
    con el patrón anterior. El primero otorga un fallo casi
    instantáneamente cuando se aplica a una línea llena de caracteres "a",
    mientras que el segundo toma un tiempo apreciable con cadenas
diff --git a/reference/strings/functions/addslashes.xml b/reference/strings/functions/addslashes.xml
new file mode 100644
index 000000000..0b0bc67e5
--- /dev/null
+++ b/reference/strings/functions/addslashes.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: 8cdc6621f9826d04abc3e50438c010804d7e8683 Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes Maintainer: Marqitos -->
+<refentry xml:id="function.addslashes" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>addslashes</refname>
+  <refpurpose>Añade barras invertidas en un string</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>string</type><methodname>addslashes</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Devuelve el string <parameter>str</parameter> después de haber escapado todos
+   los caracteres que deben serlo. Estos caracteres son:
+   <simplelist>
+    <member>comillas simples (<literal>'</literal>)</member>
+    <member>comillas dobles (<literal>"</literal>)</member>
+    <member>barra invertida (<literal>\</literal>)</member>
+    <member>NUL (el byte NUL)</member>
+   </simplelist>
+  </para>
+  <para>
+   Un caso de uso de <function>addslashes</function> es escapar los
+   caracteres mencionados en un string que debe ser evaluada por PHP:
+   <informalexample>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$str = "O'Reilly?";
+eval("echo '" . addslashes($str) . "';");
+?>
+]]>
+    </programlisting>
+   </informalexample>
+  </para>
+  <para>
+   <function>addslashes</function> es a veces utilizado incorrectamente para prevenir
+   las <link linkend="security.database.sql-injection">Inyecciones SQL</link>.
+   En su lugar, las funciones de escape específicas de la base de datos y/o
+   las declaraciones preparadas deberían ser utilizadas.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       El string a escapar.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Devuelve el string escapada.
+  </para>
+ </refsect1>
+
+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title>Ejemplo con <function>addslashes</function></title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$str = "¿Su nombre es O'reilly?";
+
+// Muestra: ¿Su nombre es O\'reilly?
+echo addslashes($str);
+?>
+]]>
+    </programlisting>
+   </example>
+  </para>
+ </refsect1>
+
+ <refsect1 role="seealso">
+  &reftitle.seealso;
+  <para>
+   <simplelist>
+    <member><function>stripcslashes</function></member>
+    <member><function>stripslashes</function></member>
+    <member><function>addcslashes</function></member>
+    <member><function>htmlspecialchars</function></member>
+    <member><function>quotemeta</function></member>
+    <member><function>get_magic_quotes_gpc</function></member>
+   </simplelist>
+  </para>
+ </refsect1>
+
+</refentry>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/strings/functions/parse-str.xml b/reference/strings/functions/parse-str.xml
new file mode 100644
index 000000000..426b915a3
--- /dev/null
+++ b/reference/strings/functions/parse-str.xml
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: e35fbbaa52702ebf45c5e7284351e136ed67f3bb Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes Maintainer: Marqitos -->
+<refentry xml:id="function.parse-str" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>parse_str</refname>
+  <refpurpose>Analiza un string de una variable</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>void</type><methodname>parse_str</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+   <methodparam><type>array</type><parameter role="reference">result</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Analiza el string <parameter>string</parameter> como si
+   se tratara de los parámetros pasados a través de la URL. Todas las variables
+   que se encuentran en ella se crean con sus valores respectivos (o en el array si <parameter>result</parameter> es proporcionado).
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       El string de entrada.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><parameter>result</parameter></term>
+     <listitem>
+      <para>
+       Si el segundo argumento <parameter>result</parameter> es proporcionado,
+       las variables se almacenarán en él, en forma de un array indexado.
+      </para>
+      <warning>
+       <para>
+        El uso de esta función sin el parámetro <parameter>result</parameter>
+        está muy <emphasis>DESACONSEJADO</emphasis> y <emphasis>OBSOLETO</emphasis>
+        a partir de PHP 7.2.
+        A partir de PHP 8.0.0, el parámetro <parameter>result</parameter> es <emphasis>obligatorio</emphasis>.
+       </para>
+      </warning>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   &return.void;
+  </para>
+ </refsect1>
+
+ <refsect1 role="changelog">
+  &reftitle.changelog;
+  <para>
+   <informaltable>
+    <tgroup cols="2">
+     <thead>
+      <row>
+       <entry>&Version;</entry>
+       <entry>&Description;</entry>
+      </row>
+     </thead>
+     <tbody>
+     <row>
+      <entry>8.0.0</entry>
+      <entry>
+       <parameter>result</parameter> ya no es opcional.
+      </entry>
+     </row>
+      <row>
+       <entry>7.2.0</entry>
+       <entry>
+        El uso de <function>parse_str</function> sin el segundo argumento
+        emite una nota <constant>E_DEPRECATED</constant>.
+       </entry>
+      </row>
+     </tbody>
+    </tgroup>
+   </informaltable>
+  </para>
+ </refsect1>
+
+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title>Ejemplo con <function>parse_str</function></title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$str = "first=value&arr[]=foo+bar&arr[]=baz";
+
+// Recomendado
+parse_str($str, $output);
+echo $output['first'];  // value
+echo $output['arr'][0]; // foo bar
+echo $output['arr'][1]; // baz
+
+// Desaconsejado
+parse_str($str);
+echo $first;  // value
+echo $arr[0]; // foo bar
+echo $arr[1]; // baz
+?>
+]]>
+    </programlisting>
+   </example>
+  </para>
+  <para>
+   Debido a que las variables en PHP no pueden tener puntos y espacios en sus nombres, estos se convierten en guiones bajos. Lo mismo se aplica a la denominación de los nombres de claves respectivos en caso de uso de esta función con el argumento de <parameter>result</parameter>.
+   <example>
+    <title>Deformación de nombres por <function>parse_str</function></title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+parse_str("My Value=Something");
+echo $My_Value; // Something
+
+parse_str("My Value=Something", $output);
+echo $output['My_Value']; // Something
+?>
+]]>
+    </programlisting>
+   </example>
+  </para>
+ </refsect1>
+  <refsect1 role="notes">
+  &reftitle.notes;
+
+  <note>
+   <para>
+    <function>parse_str()</function> se ve afectado por la directiva <link linkend="ini.max-input-vars">max_input_vars</link>.
+    Superar este límite emite un <constant>E_WARNING</constant>,
+    y las variables que los superen no se añadirán al array de resultados.
+    El valor predeterminado es 1000; ajuste <link linkend="ini.max-input-vars">max_input_vars</link> según sea necesario.
+   </para>
+  </note>
+
+  <note>
+   <para>
+    Todas las variables creadas (o valores devueltos en un array si el segundo argumento está establecido)
+    ya están <function>urldecode</function>d.
+   </para>
+  </note>
+  <note>
+   <para>
+    Para obtener el <literal>QUERY_STRING</literal> actual, se puede utilizar
+    la variable <varname>$_SERVER['QUERY_STRING']</varname>. Además, se puede leer la sección sobre las
+    <link linkend="language.variables.external"> variables de fuentes externas</link>.
+   </para>
+  </note>
+ </refsect1>
+
+ <refsect1 role="seealso">
+  &reftitle.seealso;
+  <para>
+   <simplelist>
+    <member><function>parse_url</function></member>
+    <member><function>pathinfo</function></member>
+    <member><function>http_build_query</function></member>
+    <member><function>urldecode</function></member>
+   </simplelist>
+  </para>
+ </refsect1>
+
+</refentry>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/strings/functions/str-contains.xml b/reference/strings/functions/str-contains.xml
new file mode 100644
index 000000000..a60287737
--- /dev/null
+++ b/reference/strings/functions/str-contains.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 9737e4b259e5673b055d4c8316d4c9e2892f984b Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes Maintainer: Marqitos -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-contains">
+ <refnamediv>
+  <refname>str_contains</refname>
+  <refpurpose>Determina si una cadena contiene un substring dado</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>bool</type><methodname>str_contains</methodname>
+   <methodparam><type>string</type><parameter>haystack</parameter></methodparam>
+   <methodparam><type>string</type><parameter>needle</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Realiza una verificación sensible a mayúsculas y minúsculas para indicar si <parameter>needle</parameter> (aguja)
+   está contenida en <parameter>haystack</parameter> (pajar).
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>haystack</parameter></term>
+     <listitem>
+      <para>
+       El string en el que se realiza la búsqueda.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><parameter>needle</parameter></term>
+     <listitem>
+      <para>
+       El substring a buscar en <parameter>haystack</parameter>.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Devuelve &true; si <parameter>needle</parameter> está en
+   <parameter>haystack</parameter>, de lo contrario &false;.
+  </para>
+ </refsect1>
+
+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title>Con un string vacío <literal>''</literal></title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+if (str_contains('abc', '')) {
+    echo "Verificar la existencia de la cadena vacía siempre devolverá true";
+}
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen role="php">
+<![CDATA[
+Verificar la existencia de la cadena vacía siempre devolverá true
+]]>
+    </screen>
+   </example>
+
+   <example>
+    <title>Demostración de la sensibilidad a mayúsculas y minúsculas</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$string = 'The lazy fox jumped over the fence';
+
+if (str_contains($string, 'lazy')) {
+    echo "La cadena 'lazy' fue encontrada en la cadena\n";
+}
+
+if (str_contains($string, 'Lazy')) {
+    echo 'La cadena "Lazy" fue encontrada en la cadena';
+} else {
+    echo '"Lazy" no fue encontrada porque las mayúsculas y minúsculas no coinciden';
+}
+
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen role="php">
+<![CDATA[
+La cadena 'lazy' fue encontrada en la cadena
+"Lazy" no fue encontrada porque las mayúsculas y minúsculas no coinciden
+]]>
+    </screen>
+   </example>
+  </para>
+ </refsect1>
+
+ <refsect1 role="notes">
+  &reftitle.notes;
+  &note.bin-safe;
+ </refsect1>
+
+ <refsect1 role="seealso">
+  &reftitle.seealso;
+  <para>
+   <simplelist>
+    <member><function>str_ends_with</function></member>
+    <member><function>str_starts_with</function></member>
+    <member><function>stripos</function></member>
+    <member><function>strrpos</function></member>
+    <member><function>strripos</function></member>
+    <member><function>strstr</function></member>
+    <member><function>strpbrk</function></member>
+    <member><function>substr</function></member>
+    <member><function>preg_match</function></member>
+   </simplelist>
+  </para>
+ </refsect1>
+
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/strings/functions/str-decrement.xml b/reference/strings/functions/str-decrement.xml
new file mode 100644
index 000000000..d81172fd4
--- /dev/null
+++ b/reference/strings/functions/str-decrement.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 57c83578be2f0ebf3528f1296040fe738dac37de Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes Maintainer: Marqitos -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-decrement">
+ <refnamediv>
+  <refname>str_decrement</refname>
+  <refpurpose>Decrementa un string alfanumérico</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>string</type><methodname>str_decrement</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Devuelve el string alfanumérico <acronym>ASCII</acronym> decrementado
+   <parameter>string</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       El string a decrementar.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Devuelve el string alfanumérico <acronym>ASCII</acronym> decrementado.
+  </para>
+ </refsect1>
+
+ <refsect1 role="errors">
+  &reftitle.errors;
+  <para>
+   Se lanza una excepción <classname>ValueError</classname> si
+   <parameter>string</parameter> está vacío.
+  </para>
+  <para>
+   Se lanza una excepción <classname>ValueError</classname> si
+   <parameter>string</parameter> no es un string alfanumérico
+   <acronym>ASCII</acronym>.
+  </para>
+  <para>
+   Se lanza una excepción <classname>ValueError</classname> si
+   <parameter>string</parameter> no puede ser decrementado.
+   Por ejemplo, <literal>"A"</literal> o <literal>"0"</literal>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title>Ejemplo básico de la función <function>str_decrement</function></title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$str = 'ABC';
+var_dump(str_decrement($str));
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen>
+<![CDATA[
+string(3) "ABB"
+]]>
+    </screen>
+   </example>
+  </para>
+  <para>
+   <example>
+    <title>Ejemplo de la función <function>str_decrement</function> con una retención</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$str = 'ZA';
+var_dump(str_decrement($str));
+
+$str = 'AA';
+var_dump(str_decrement($str));
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen>
+<![CDATA[
+string(2) "YZ"
+string(1) "Z"
+]]>
+    </screen>
+   </example>
+  </para>
+ </refsect1>
+
+ <refsect1 role="seealso">
+  &reftitle.seealso;
+  <para>
+   <simplelist>
+    <member><function>str_increment</function></member>
+   </simplelist>
+  </para>
+ </refsect1>
+
+</refentry>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/strings/functions/str-ends-with.xml b/reference/strings/functions/str-ends-with.xml
new file mode 100644
index 000000000..45049030d
--- /dev/null
+++ b/reference/strings/functions/str-ends-with.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 1bf3ed99f67e627624fca77c15601836b7febf65 Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes Maintainer: Marqitos -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-ends-with">
+ <refnamediv>
+  <refname>str_ends_with</refname>
+  <refpurpose>Determina si una cadena termina con un substring dado</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>bool</type><methodname>str_ends_with</methodname>
+   <methodparam><type>string</type><parameter>haystack</parameter></methodparam>
+   <methodparam><type>string</type><parameter>needle</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Realiza una verificación sensible a mayúsculas y minúsculas que indica si
+   <parameter>haystack</parameter> (pajar) termina con <parameter>needle</parameter> (aguja).
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>haystack</parameter></term>
+     <listitem>
+      <para>
+       El string en la que se realiza la búsqueda.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><parameter>needle</parameter></term>
+     <listitem>
+      <para>
+       El substring a buscar en <parameter>haystack</parameter>.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Devuelve &true; si <parameter>haystack</parameter> termina con
+   <parameter>needle</parameter>, de lo contrario &false;.
+  </para>
+ </refsect1>
+
+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title>Con un string vacío <literal>''</literal></title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+if (str_ends_with('abc', '')) {
+    echo "Todas las cadenas terminan con la cadena vacía";
+}
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen role="php">
+<![CDATA[
+Todas las cadenas terminan con la cadena vacía
+]]>
+    </screen>
+   </example>
+
+   <example>
+    <title>Demostración de la sensibilidad a mayúsculas y minúsculas</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$string = 'The lazy fox jumped over the fence';
+
+if (str_ends_with($string, 'fence')) {
+    echo "La cadena termina con 'fence'\n";
+}
+
+if (str_ends_with($string, 'Fence')) {
+    echo 'La cadena termina con "Fence"';
+} else {
+    echo '"Fence" no fue encontrado porque las mayúsculas y minúsculas no coinciden';
+}
+
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen role="php">
+<![CDATA[
+La cadena termina con 'fence'
+"Fence" no fue encontrado porque las mayúsculas y minúsculas no coinciden
+]]>
+    </screen>
+   </example>
+  </para>
+ </refsect1>
+
+ <refsect1 role="notes">
+  &reftitle.notes;
+  &note.bin-safe;
+ </refsect1>
+
+ <refsect1 role="seealso">
+  &reftitle.seealso;
+  <para>
+   <simplelist>
+    <member><function>str_contains</function></member>
+    <member><function>str_starts_with</function></member>
+    <member><function>stripos</function></member>
+    <member><function>strrpos</function></member>
+    <member><function>strripos</function></member>
+    <member><function>strstr</function></member>
+    <member><function>strpbrk</function></member>
+    <member><function>substr</function></member>
+    <member><function>preg_match</function></member>
+   </simplelist>
+  </para>
+ </refsect1>
+
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/strings/functions/str-increment.xml b/reference/strings/functions/str-increment.xml
new file mode 100644
index 000000000..698834630
--- /dev/null
+++ b/reference/strings/functions/str-increment.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 57c83578be2f0ebf3528f1296040fe738dac37de Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes Maintainer: Marqitos -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-increment">
+ <refnamediv>
+  <refname>str_increment</refname>
+  <refpurpose>Incrementa un string alfanumérica</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>string</type><methodname>str_increment</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Devuelve el string alfanumérico <acronym>ASCII</acronym> incrementado
+   <parameter>string</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       El string a incrementar.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Devuelve el string alfanumérico <acronym>ASCII</acronym> incrementado.
+  </para>
+ </refsect1>
+
+ <refsect1 role="errors">
+  &reftitle.errors;
+  <para>
+   Se lanza una excepción <classname>ValueError</classname> si
+   <parameter>string</parameter> está vacío.
+  </para>
+  <para>
+   Se lanza una excepción <classname>ValueError</classname> si
+   <parameter>string</parameter> no es un string alfanumérico
+   <acronym>ASCII</acronym>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title>Ejemplo básico de la función <function>str_increment</function></title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$str = 'ABC';
+var_dump(str_increment($str));
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen>
+<![CDATA[
+string(3) "ABD"
+]]>
+    </screen>
+   </example>
+  </para>
+  <para>
+   <example>
+    <title>Ejemplo de <function>str_increment</function> con acarreo</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$str = 'DZ';
+var_dump(str_increment($str));
+
+$str = 'ZZ';
+var_dump(str_increment($str));
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen>
+<![CDATA[
+string(2) "EA"
+string(3) "AAA"
+]]>
+    </screen>
+   </example>
+  </para>
+ </refsect1>
+
+ <refsect1 role="seealso">
+  &reftitle.seealso;
+  <para>
+   <simplelist>
+    <member><function>str_decrement</function></member>
+   </simplelist>
+  </para>
+ </refsect1>
+
+</refentry>
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/strings/functions/str-starts-with.xml b/reference/strings/functions/str-starts-with.xml
new file mode 100644
index 000000000..9beb1dd16
--- /dev/null
+++ b/reference/strings/functions/str-starts-with.xml
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 9737e4b259e5673b055d4c8316d4c9e2892f984b Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes Maintainer: Marqitos -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-starts-with">
+ <refnamediv>
+  <refname>str_starts_with</refname>
+  <refpurpose>Determina si un string comienza con un substring dado</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>bool</type><methodname>str_starts_with</methodname>
+   <methodparam><type>string</type><parameter>haystack</parameter></methodparam>
+   <methodparam><type>string</type><parameter>needle</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Realiza una verificación sensible a mayúsculas y minúsculas que indica si
+   <parameter>haystack</parameter> (pajar) comienza con <parameter>needle</parameter> (aguja).
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>haystack</parameter></term>
+     <listitem>
+      <para>
+       El string en la que se realiza la búsqueda.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><parameter>needle</parameter></term>
+     <listitem>
+      <para>
+       El substring a buscar en <parameter>haystack</parameter>.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Devuelve &true; si <parameter>haystack</parameter> comienza con
+   <parameter>needle</parameter>, de lo contrario &false;.
+  </para>
+ </refsect1>
+
+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title>Con un string vacío <literal>''</literal></title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+if (str_starts_with('abc', '')) {
+    echo "Todas los strings comienzan con el string vacía";
+}
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen role="php">
+<![CDATA[
+Todas los strings comienzan con el string vacía
+]]>
+    </screen>
+   </example>
+
+   <example>
+    <title>Demostración de la sensibilidad a mayúsculas y minúsculas</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$string = 'The lazy fox jumped over the fence';
+
+if (str_starts_with($string, 'The')) {
+    echo "El string comienza con 'The'\n";
+}
+
+if (str_starts_with($string, 'the')) {
+    echo 'El string comienza con "the"';
+} else {
+    echo '"the" no fue encontrado porque las mayúsculas y minúsculas no coinciden';
+}
+
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen role="php">
+<![CDATA[
+El string comienza con 'The'
+"the" no fue encontrado porque las mayúsculas y minúsculas no coinciden
+]]>
+    </screen>
+   </example>
+  </para>
+ </refsect1>
+
+ <refsect1 role="notes">
+  &reftitle.notes;
+  &note.bin-safe;
+ </refsect1>
+
+ <refsect1 role="seealso">
+  &reftitle.seealso;
+  <para>
+   <simplelist>
+    <member><function>str_contains</function></member>
+    <member><function>str_ends_with</function></member>
+    <member><function>stripos</function></member>
+    <member><function>strrpos</function></member>
+    <member><function>strripos</function></member>
+    <member><function>strstr</function></member>
+    <member><function>strpbrk</function></member>
+    <member><function>substr</function></member>
+    <member><function>preg_match</function></member>
+   </simplelist>
+  </para>
+ </refsect1>
+
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+indent-tabs-mode:nil
+sgml-parent-document:nil
+sgml-default-dtd-file:"~/.phpdoc/manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+vim600: syn=xml fen fdm=syntax fdl=2 si
+vim: et tw=78 syn=sgml
+vi: ts=1 sw=1
+-->
diff --git a/reference/strings/functions/strrev.xml b/reference/strings/functions/strrev.xml
index 5347e78f2..6560e4fd4 100644
--- a/reference/strings/functions/strrev.xml
+++ b/reference/strings/functions/strrev.xml
@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- $Revision$ --> 
+<!-- $Revision$ -->
 <!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: benjamin Status: ready -->
-<!-- Reviewed: not --> 
+<!-- Reviewed: no -->
 <refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.strrev">
  <refnamediv>
   <refname>strrev</refname>
-  <refpurpose>Invierte una string</refpurpose>
+  <refpurpose>Invierte un string</refpurpose>
  </refnamediv>
- 
+
  <refsect1 role="description">
   &reftitle.description;
   <methodsynopsis>
@@ -15,7 +15,7 @@
    <methodparam><type>string</type><parameter>string</parameter></methodparam>
   </methodsynopsis>
   <para>
-   devuelve la <parameter>cadena</parameter>, invertida.
+   devuelve el <parameter>string</parameter>, invertido.
   </para>
  </refsect1>
 
@@ -24,10 +24,10 @@
   <para>
    <variablelist>
     <varlistentry>
-     <term><parameter>cadena</parameter></term>
+     <term><parameter>string</parameter></term>
      <listitem>
       <para>
-       La cadena que será invertida
+       El &string; que será invertido.
       </para>
      </listitem>
     </varlistentry>
@@ -38,7 +38,7 @@
  <refsect1 role="returnvalues">
   &reftitle.returnvalues;
   <para>
-   devuelve la cadena invertida.
+   Devuelve el &string; invertido.
   </para>
  </refsect1>
 
@@ -46,16 +46,16 @@
   &reftitle.examples;
   <para>
    <example>
-    <title>Invertir una cadena con <function>strrev</function></title>
+    <title>Invertir un string con <function>strrev</function></title>
     <programlisting role="php">
 <![CDATA[
 <?php
-echo strrev("Hello world!"); // outputs "!dlrow olleH"
+echo strrev("Hola mundo!"); // Imprime "!odnum aloH"
 ?>
 ]]>
     </programlisting>
    </example>
-  </para>   
+  </para>
  </refsect1>
 
 </refentry>
diff --git a/reference/strings/functions/substr.xml b/reference/strings/functions/substr.xml
index b2476bac8..146e3cd22 100644
--- a/reference/strings/functions/substr.xml
+++ b/reference/strings/functions/substr.xml
@@ -5,9 +5,9 @@
 <refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.substr">
  <refnamediv>
   <refname>substr</refname>
-  <refpurpose>Devuelve parte de una cadena</refpurpose>
+  <refpurpose>Devuelve parte de un string</refpurpose>
  </refnamediv>
- 
+
  <refsect1 role="description">
   &reftitle.description;
   <methodsynopsis>
@@ -21,39 +21,39 @@
    parámetros <parameter>offset</parameter> y <parameter>length</parameter>.
   </para>
  </refsect1>
- 
- <refsect1 role="parameters"> 
-  &reftitle.parameters; 
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
   <para>
    <variablelist>
     <varlistentry>
      <term><parameter>string</parameter></term>
      <listitem>
-      <para> 
-       La cadena de entrada. Debe ser de almenos de un caracter.
+      <para>
+       El &string; de entrada. Debe ser de almenos de un caracter.
       </para>
      </listitem>
     </varlistentry>
     <varlistentry>
      <term><parameter>offset</parameter></term>
      <listitem>
-      <para> 
-       Si <parameter>offset</parameter> no es negativo, la cadena devuelta
+      <para>
+       Si <parameter>offset</parameter> no es negativo, el &string; devuelto
        comenzará en el <parameter>offset</parameter> de la posición del
        <parameter>string</parameter> empezando desde cero. Por ejemplo,
-       en la cadena '<literal>abcdef</literal>', el carácter en la posición
+       en el &string; '<literal>abcdef</literal>', el carácter en la posición
        <literal>0</literal> es '<literal>a</literal>', el carácter en la
-       posición <literal>2</literal> es 
-       '<literal>c</literal>', y así sucesivamente. 
+       posición <literal>2</literal> es
+       '<literal>c</literal>', y así sucesivamente.
       </para>
-      <para> 
-       Si <parameter>offset</parameter> es negativo, la cadena devuelta
+      <para>
+       Si <parameter>offset</parameter> es negativo, el &string; devuelto
        empezará en <parameter>offset</parameter> contando desde el final de
-       <parameter>string</parameter>. 
+       <parameter>string</parameter>.
       </para>
-      <para> 
+      <para>
        Si la longitud del <parameter>string</parameter> es menor que
-       <parameter>offset</parameter>, la función devolverá &false;. 
+       <parameter>offset</parameter>, la función devolverá &false;.
       </para>
       <para>
        <example>
@@ -75,26 +75,26 @@ $rest = substr("abcdef", -3, 1); // devuelve "d"
      <term><parameter>length</parameter></term>
      <listitem>
       <para>
-       Si se especifica el <parameter>length</parameter> y es positivo, la
-       cadena devuelta contendrá como máximo de caracteres de la cantidad dada
+       Si se especifica el <parameter>length</parameter> y es positivo, el
+       &string; devuelta contendrá como máximo de caracteres de la cantidad dada
        por <parameter>length</parameter> que comienza en <parameter>start</parameter> (dependiedo de la longitud del
        <parameter>string</parameter>).
       </para>
       <para>
-       Si se especifica <parameter>length</parameter> es negativo, entonces ese número de caracteres 
-       se omiten al final del <parameter>string</parameter> 
+       Si se especifica <parameter>length</parameter> es negativo, entonces ese número de caracteres
+       se omiten al final del <parameter>string</parameter>
        (después de la posición inicial se ha calculado a <parameter>start</parameter> es negativo). Si
        <parameter>start</parameter> indica la posición de su truncamiento
        o más allá, se devolverá &false;.
       </para>
       <para>
-       Si se omite el <parameter>length</parameter>, la subcadena empezará por
-       <parameter>start</parameter> hasta el final de la cadena donde será
-       devuelta.
-      </para>      
+       Si se omite el <parameter>length</parameter>, el substring empezará por
+       <parameter>start</parameter> hasta el final del &string; donde será
+       devuelto.
+      </para>
       <para>
-       Si se especifica <parameter>length</parameter> y es <literal>0</literal>, 
-       &false; o &null; devolverá una cadena vacía.
+       Si se especifica <parameter>length</parameter> y es <literal>0</literal>,
+       &false; o &null; devolverá un &string; vacío.
       </para>
       <example>
        <title>Usando un <parameter>length</parameter> negativo</title>
@@ -114,15 +114,15 @@ $rest = substr("abcdef", -3, -1); // devuelve "de"
    </variablelist>
   </para>
  </refsect1>
- 
- <refsect1 role="returnvalues"> 
-  &reftitle.returnvalues; 
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
   <para>
    Devuelve la parte extraída de <parameter>string</parameter>; o un
-   <parameter>string</parameter> vacío.
+   &string; vacío.
   </para>
  </refsect1>
- 
+
  <refsect1 role="changelog">
   &reftitle.changelog;
   <para>
@@ -140,13 +140,13 @@ $rest = substr("abcdef", -3, -1); // devuelve "de"
        <entry>
         <parameter>length</parameter> es ahora anulable.
         Cuando <parameter>length</parameter> se establece explícitamente en &null;,
-        la función devuelve una subcadena que termina al final de la cadena, mientras que anteriormente devolvía una cadena vacía.
+        la función devuelve un substring que termina al final del &string;, mientras que anteriormente devolvía un &string; vacío.
        </entry>
       </row>
       <row>
        <entry>8.0.0</entry>
        <entry>
-        La función devuelve una cadena vacía donde anteriormente devolvía &false;.
+        La función devuelve un &string; vacío donde anteriormente devolvía &false;.
        </entry>
       </row>
      </tbody>
@@ -154,8 +154,8 @@ $rest = substr("abcdef", -3, -1); // devuelve "de"
    </informaltable>
   </para>
  </refsect1>
- 
- <refsect1 role="examples"> 
+
+ <refsect1 role="examples">
   &reftitle.examples;
   <para>
    <example>
@@ -164,13 +164,13 @@ $rest = substr("abcdef", -3, -1); // devuelve "de"
 <![CDATA[
 <?php
 echo substr('abcdef', 1);     // bcdef
-echo substr("abcdef", 1, null); // bcdef; Antes de PHP 8.0.0, se devolvía una cadena vacía.
+echo substr("abcdef", 1, null); // bcdef; Antes de PHP 8.0.0, se devolvía un string vacío.
 echo substr('abcdef', 1, 3);  // bcd
 echo substr('abcdef', 0, 4);  // abcd
 echo substr('abcdef', 0, 8);  // abcdef
 echo substr('abcdef', -1, 1); // f
 
-// El acceso a caracteres específicos en una cadena 
+// El acceso a caracteres específicos en un string
 // se puede conseguir usando "corchetes"
 $string = 'abcdef';
 echo $string[0];                 // a
@@ -219,7 +219,7 @@ echo "7) ".var_export(substr(1.2e3, 0, 4), true).PHP_EOL;
    <title>Rango de caracteres inválido</title>
    <para>
     Si se solicita un rango de caracteres inválido, <function>substr</function> devuelve
-    una cadena vacía a partir de PHP 8.0.0; anteriormente, se devolvía &false; en su lugar.
+    un &string; vacío a partir de PHP 8.0.0; anteriormente, se devolvía &false; en su lugar.
     </para>
    <programlisting role="php">
 <![CDATA[
@@ -243,7 +243,7 @@ bool(false)
   </example>
   </para>
  </refsect1>
- 
+
  <refsect1 role="seealso">
   &reftitle.seealso;
   <para>
@@ -258,7 +258,7 @@ bool(false)
    </simplelist>
   </para>
  </refsect1>
- 
+
 </refentry>
 
 <!-- Keep this comment at the end of the file
diff --git a/reference/yaz/functions/yaz-es.xml b/reference/yaz/functions/yaz-es.xml
index 58a0fbf37..7cfccffa8 100644
--- a/reference/yaz/functions/yaz-es.xml
+++ b/reference/yaz/functions/yaz-es.xml
@@ -1,11 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- $Revision$ -->
 <!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: jpberdejo Status: ready -->
+<!-- Reviewed: yes Maintainer: Marqitos -->
 <refentry xml:id="function.yaz-es" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
  <refnamediv>
   <refname>yaz_es</refname>
   <refpurpose>
-   Prepara para una solicitud de servicio extendido 
+   Prepara para una solicitud de servicio extendido
   </refpurpose>
  </refnamediv>
  <refsect1 role="description">
@@ -33,7 +34,7 @@
    </para>
   </note>
   <para>
-   La <function>yaz_es</function> crea un paquete de solicitud de servicio 
+   La <function>yaz_es</function> crea un paquete de solicitud de servicio
    extendido y la pone en una cola de operaciones.
    Se utiliza <function>yaz_wait</function> para enviar la(s) solicitud(es) al servidor.
    Después de completar <function>yaz_wait</function> el resultado de
@@ -57,7 +58,7 @@
      <term><parameter>type</parameter></term>
      <listitem>
       <para>
-       Una string que representa el tipo de servicio extendido:
+       Un string que representa el tipo de servicio extendido:
        <literal>itemorder</literal> (Ordenado de ítem),
        <literal>create</literal> (Crear base de datos),
        <literal>drop</literal> (Descartar base de datos),
@@ -145,4 +146,3 @@ vim600: syn=xml fen fdm=syntax fdl=2 si
 vim: et tw=78 syn=sgml
 vi: ts=1 sw=1
 -->
-


Reviews:
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:21:28Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:24:13Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:24:56Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:26:55Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:27:46Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:28:26Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:28:52Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:31:25Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:34:24Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:45:17Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:47:30Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:50:44Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:51:19Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:51:55Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:53:52Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:54:33Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:54:58Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:55:50Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:56:45Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:57:25Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:58:06Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T01:59:03Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T02:01:06Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T02:03:27Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T02:05:06Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T02:05:42Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T02:08:14Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T02:09:10Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T02:09:44Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T02:10:25Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T02:11:03Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T02:11:38Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T02:12:25Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T02:13:01Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T02:15:17Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T02:15:55Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T02:17:14Z
user: login: Marqitos
body: Revisa la tradiciones de string y substring, ten en cuenta que en español de utiliza en anglicismo, pero que yo haya visto, siempre se tratan en masculino.
state: CHANGES_REQUESTED
author_association: MEMBER
submitted_at: 2025-03-23T02:20:27Z
user: login: Marqitos
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T13:57:42Z
user: login: Marqitos
body: Por mi parte lo veo todo correcto.
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-23T16:50:41Z
user: login: Marqitos
body: Por mi parte lo veo todo correcto.
state: APPROVED
author_association: MEMBER
submitted_at: 2025-03-23T16:55:21Z

Review comments:
diff_hunk: @@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: 8cdc6621f9826d04abc3e50438c010804d7e8683 Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes -->
+<refentry xml:id="function.addslashes" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>addslashes</refname>
+  <refpurpose>Añade barras invertidas en una string</refpurpose>
path: reference/strings/functions/addslashes.xml
user: login: Marqitos
body: Recuerda, en español, usando el anglicismo `string`, lo usamos en masculino.

`Añade barras invertidas en una string`

➡️ `Añade barras invertidas en un string`
created_at: 2025-03-23T01:21:27Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: 8cdc6621f9826d04abc3e50438c010804d7e8683 Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes -->
+<refentry xml:id="function.addslashes" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>addslashes</refname>
+  <refpurpose>Añade barras invertidas en una string</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>string</type><methodname>addslashes</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Devuelve la string <parameter>str</parameter> después de haber escapado todos
+   los caracteres que deben serlo. Estos caracteres son:
+   <simplelist>
+    <member>comillas simples (<literal>'</literal>)</member>
+    <member>comillas dobles (<literal>"</literal>)</member>
+    <member>barra invertida (<literal>\</literal>)</member>
+    <member>NUL (el byte NUL)</member>
+   </simplelist>
+  </para>
+  <para>
+   Un caso de uso de <function>addslashes</function> es escapar los
+   caracteres mencionados en una string que debe ser evaluada por PHP:
+   <informalexample>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$str = "O'Reilly?";
+eval("echo '" . addslashes($str) . "';");
+?>
+]]>
+    </programlisting>
+   </informalexample>
+  </para>
+  <para>
+   <function>addslashes</function> es a veces utilizado incorrectamente para prevenir
+   las <link linkend="security.database.sql-injection">Inyecciones SQL</link>.
+   En su lugar, las funciones de escape específicas de la base de datos y/o
+   las declaraciones preparadas deberían ser utilizadas.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       La string a escapar.
path: reference/strings/functions/addslashes.xml
user: login: Marqitos
body: `La string a escapar.`

➡️ `El string a escapar.`
created_at: 2025-03-23T01:24:12Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: 8cdc6621f9826d04abc3e50438c010804d7e8683 Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes -->
+<refentry xml:id="function.addslashes" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>addslashes</refname>
+  <refpurpose>Añade barras invertidas en una string</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>string</type><methodname>addslashes</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Devuelve la string <parameter>str</parameter> después de haber escapado todos
path: reference/strings/functions/addslashes.xml
user: login: Marqitos
body: `Devuelve la string` ...

➡️ `Devuelve el string` ...
created_at: 2025-03-23T01:24:55Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: 8cdc6621f9826d04abc3e50438c010804d7e8683 Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes -->
+<refentry xml:id="function.addslashes" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>addslashes</refname>
+  <refpurpose>Añade barras invertidas en una string</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>string</type><methodname>addslashes</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Devuelve la string <parameter>str</parameter> después de haber escapado todos
+   los caracteres que deben serlo. Estos caracteres son:
+   <simplelist>
+    <member>comillas simples (<literal>'</literal>)</member>
+    <member>comillas dobles (<literal>"</literal>)</member>
+    <member>barra invertida (<literal>\</literal>)</member>
+    <member>NUL (el byte NUL)</member>
+   </simplelist>
+  </para>
+  <para>
+   Un caso de uso de <function>addslashes</function> es escapar los
+   caracteres mencionados en una string que debe ser evaluada por PHP:
path: reference/strings/functions/addslashes.xml
user: login: Marqitos
body: ... `mencionados en una string` ...

... `mencionados en un string` ...
created_at: 2025-03-23T01:25:30Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: 8cdc6621f9826d04abc3e50438c010804d7e8683 Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes -->
+<refentry xml:id="function.addslashes" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>addslashes</refname>
+  <refpurpose>Añade barras invertidas en una string</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>string</type><methodname>addslashes</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Devuelve la string <parameter>str</parameter> después de haber escapado todos
+   los caracteres que deben serlo. Estos caracteres son:
+   <simplelist>
+    <member>comillas simples (<literal>'</literal>)</member>
+    <member>comillas dobles (<literal>"</literal>)</member>
+    <member>barra invertida (<literal>\</literal>)</member>
+    <member>NUL (el byte NUL)</member>
+   </simplelist>
+  </para>
+  <para>
+   Un caso de uso de <function>addslashes</function> es escapar los
+   caracteres mencionados en una string que debe ser evaluada por PHP:
+   <informalexample>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$str = "O'Reilly?";
+eval("echo '" . addslashes($str) . "';");
+?>
+]]>
+    </programlisting>
+   </informalexample>
+  </para>
+  <para>
+   <function>addslashes</function> es a veces utilizado incorrectamente para prevenir
+   las <link linkend="security.database.sql-injection">Inyecciones SQL</link>.
+   En su lugar, las funciones de escape específicas de la base de datos y/o
+   las declaraciones preparadas deberían ser utilizadas.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       La string a escapar.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Devuelve la string escapada.
path: reference/strings/functions/addslashes.xml
user: login: Marqitos
body: `Devuelve la string escapada.`

➡️ `Devuelve el string escapado.`
created_at: 2025-03-23T01:26:54Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: e35fbbaa52702ebf45c5e7284351e136ed67f3bb Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes -->
+<refentry xml:id="function.parse-str" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>parse_str</refname>
+  <refpurpose>Analiza una string de una variable</refpurpose>
path: reference/strings/functions/parse-str.xml
user: login: Marqitos
body: `Analiza una string de una variable`

➡️ `Analiza un string de una variable`
created_at: 2025-03-23T01:27:45Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: e35fbbaa52702ebf45c5e7284351e136ed67f3bb Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes -->
+<refentry xml:id="function.parse-str" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>parse_str</refname>
+  <refpurpose>Analiza una string de una variable</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>void</type><methodname>parse_str</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+   <methodparam><type>array</type><parameter role="reference">result</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Analiza la string <parameter>string</parameter> como si
path: reference/strings/functions/parse-str.xml
user: login: Marqitos
body: `Analiza la string` ...

➡️ `Analiza el string` ...
created_at: 2025-03-23T01:28:24Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: e35fbbaa52702ebf45c5e7284351e136ed67f3bb Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes -->
+<refentry xml:id="function.parse-str" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>parse_str</refname>
+  <refpurpose>Analiza una string de una variable</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>void</type><methodname>parse_str</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+   <methodparam><type>array</type><parameter role="reference">result</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Analiza la string <parameter>string</parameter> como si
+   se tratara de los parámetros pasados a través de la URL. Todas las variables
+   que se encuentran en ella se crean con sus valores respectivos (o en el array si <parameter>result</parameter> es proporcionado).
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       La string de entrada.
path: reference/strings/functions/parse-str.xml
user: login: Marqitos
body: `La string de entrada.`

➡️ `El string de entrada.`
created_at: 2025-03-23T01:28:51Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: e35fbbaa52702ebf45c5e7284351e136ed67f3bb Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes -->
+<refentry xml:id="function.parse-str" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>parse_str</refname>
+  <refpurpose>Analiza una string de una variable</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>void</type><methodname>parse_str</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+   <methodparam><type>array</type><parameter role="reference">result</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Analiza la string <parameter>string</parameter> como si
+   se tratara de los parámetros pasados a través de la URL. Todas las variables
+   que se encuentran en ella se crean con sus valores respectivos (o en el array si <parameter>result</parameter> es proporcionado).
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       La string de entrada.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><parameter>result</parameter></term>
+     <listitem>
+      <para>
+       Si el segundo argumento <parameter>result</parameter> es proporcionado,
+       las variables se almacenarán en él, en forma de un array indexado.
+      </para>
+      <warning>
+       <para>
+        El uso de esta función sin el argumento <parameter>result</parameter>
+        está muy <emphasis>desaconsejado</emphasis> y <emphasis>desaconsejado</emphasis>
path: reference/strings/functions/parse-str.xml
user: login: Marqitos
body: ... `<emphasis>desaconsejado</emphasis> y <emphasis>desaconsejado</emphasis>`

EN `<emphasis>DISCOURAGED</emphasis> and <emphasis>DEPRECATED</emphasis>` ...

➡️ `<emphasis>DESACONSEJADO</emphasis> y <emphasis>OBSOLETO</emphasis>`
created_at: 2025-03-23T01:31:23Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: e35fbbaa52702ebf45c5e7284351e136ed67f3bb Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes -->
+<refentry xml:id="function.parse-str" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>parse_str</refname>
+  <refpurpose>Analiza una string de una variable</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>void</type><methodname>parse_str</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+   <methodparam><type>array</type><parameter role="reference">result</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Analiza la string <parameter>string</parameter> como si
+   se tratara de los parámetros pasados a través de la URL. Todas las variables
+   que se encuentran en ella se crean con sus valores respectivos (o en el array si <parameter>result</parameter> es proporcionado).
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       La string de entrada.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><parameter>result</parameter></term>
+     <listitem>
+      <para>
+       Si el segundo argumento <parameter>result</parameter> es proporcionado,
+       las variables se almacenarán en él, en forma de un array indexado.
+      </para>
+      <warning>
+       <para>
+        El uso de esta función sin el argumento <parameter>result</parameter>
+        está muy <emphasis>desaconsejado</emphasis> y <emphasis>desaconsejado</emphasis>
+        a partir de PHP 7.2.
+        A partir de PHP 8.0.0, el argumento <parameter>result</parameter> es <emphasis>obligatorio</emphasis>.
path: reference/strings/functions/parse-str.xml
user: login: Marqitos
body: Según la documentación en inglés

`A partir de PHP 8.0.0, el argumento <parameter>result</parameter>` ...

EN `As of PHP 8.0.0, the <parameter>result</parameter> parameter` ...

➡️ `A partir de PHP 8.0.0, el parámetro <parameter>result</parameter>` ...
created_at: 2025-03-23T01:34:23Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: e35fbbaa52702ebf45c5e7284351e136ed67f3bb Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes -->
+<refentry xml:id="function.parse-str" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>parse_str</refname>
+  <refpurpose>Analiza una string de una variable</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>void</type><methodname>parse_str</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+   <methodparam><type>array</type><parameter role="reference">result</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Analiza la string <parameter>string</parameter> como si
+   se tratara de los parámetros pasados a través de la URL. Todas las variables
+   que se encuentran en ella se crean con sus valores respectivos (o en el array si <parameter>result</parameter> es proporcionado).
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       La string de entrada.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><parameter>result</parameter></term>
+     <listitem>
+      <para>
+       Si el segundo argumento <parameter>result</parameter> es proporcionado,
+       las variables se almacenarán en él, en forma de un array indexado.
+      </para>
+      <warning>
+       <para>
+        El uso de esta función sin el argumento <parameter>result</parameter>
+        está muy <emphasis>desaconsejado</emphasis> y <emphasis>desaconsejado</emphasis>
+        a partir de PHP 7.2.
+        A partir de PHP 8.0.0, el argumento <parameter>result</parameter> es <emphasis>obligatorio</emphasis>.
+       </para>
+      </warning>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   &return.void;
+  </para>
+ </refsect1>
+
+ <refsect1 role="changelog">
+  &reftitle.changelog;
+  <para>
+   <informaltable>
+    <tgroup cols="2">
+     <thead>
+      <row>
+       <entry>&Version;</entry>
+       <entry>&Description;</entry>
+      </row>
+     </thead>
+     <tbody>
+     <row>
+      <entry>8.0.0</entry>
+      <entry>
+       <parameter>result</parameter> ya no es opcional.
+      </entry>
+     </row>
+      <row>
+       <entry>7.2.0</entry>
+       <entry>
+        El uso de <function>parse_str</function> sin el segundo argumento
+        emite una nota <constant>E_DEPRECATED</constant>.
+       </entry>
+      </row>
+     </tbody>
+    </tgroup>
+   </informaltable>
+  </para>
+ </refsect1>
+
+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title>Ejemplo con <function>parse_str</function></title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$str = "first=value&arr[]=foo+bar&arr[]=baz";
+
+// Recomendado
+parse_str($str, $output);
+echo $output['first'];  // value
+echo $output['arr'][0]; // foo bar
+echo $output['arr'][1]; // baz
+
+// Desaconsejado
+parse_str($str);
+echo $first;  // value
+echo $arr[0]; // foo bar
+echo $arr[1]; // baz
+?>
+]]>
+    </programlisting>
+   </example>
+  </para>
+  <para>
+   Debido a que las variables en PHP no pueden tener puntos y espacios en sus nombres, estos se convierten en guiones bajos. Lo mismo se aplica a la denominación de los nombres de claves respectivos en caso de uso de esta función con el argumento de <parameter>result</parameter>.
+   <example>
+    <title>Deformación de nombres por <function>parse_str</function></title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+parse_str("My Value=Something");
+echo $My_Value; // Something
+
+parse_str("My Value=Something", $output);
+echo $output['My_Value']; // Something
+?>
+]]>
+    </programlisting>
+   </example>
+  </para>
+ </refsect1>
+  <refsect1 role="notes">
+  &reftitle.notes;
+
path: reference/strings/functions/parse-str.xml
user: login: Marqitos
body: Falta una `<note>`

EN
```xml
  <note>
   <para>
    <function>parse_str()</function> is affected by the <link linkend="ini.max-input-vars">max_input_vars</link>
    directive. Exceeding this limit triggers an <constant>E_WARNING</constant>,
    and any variables beyond the limit are not added to the result array.
    The default is 1000; adjust <link linkend="ini.max-input-vars">max_input_vars</link> as needed.
   </para>
  </note>
```

➡️
```xml
  <note>
   <para>
    <function>parse_str()</function> se ve afectado por la directiva <link linkend="ini.max-input-vars">max_input_vars</link>.
    Superar este límite emite un <constant>E_WARNING</constant>,
    y las variables que los superen no se añadirán al array de resultados.
    El valor predeterminado es 1000; ajuste <link linkend="ini.max-input-vars">max_input_vars</link> según sea necesario.
   </para>
  </note>
```
created_at: 2025-03-23T01:45:16Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 9737e4b259e5673b055d4c8316d4c9e2892f984b Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: no -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-starts-with">
+ <refnamediv>
+  <refname>str_starts_with</refname>
+  <refpurpose>Determina si una string comienza con una substring dada</refpurpose>
path: reference/strings/functions/str-starts-with.xml
user: login: Marqitos
body: `Determina si una string comienza con una substring dada`

➡️ `Determina si un string comienza con un substring dado`
created_at: 2025-03-23T01:47:29Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 9737e4b259e5673b055d4c8316d4c9e2892f984b Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: no -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-starts-with">
+ <refnamediv>
+  <refname>str_starts_with</refname>
+  <refpurpose>Determina si una string comienza con una substring dada</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>bool</type><methodname>str_starts_with</methodname>
+   <methodparam><type>string</type><parameter>haystack</parameter></methodparam>
+   <methodparam><type>string</type><parameter>needle</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Realiza una verificación sensible a mayúsculas y minúsculas que indica si
+   <parameter>haystack</parameter> comienza con <parameter>needle</parameter>.
path: reference/strings/functions/str-starts-with.xml
user: login: Marqitos
body: En otras partes de la documentación, para usar el memotecnico, se especifica la traducción de los parámetros.
Cambialo solo si te parece adecuado.

`<parameter>haystack</parameter> comienza con <parameter>needle</parameter>.`

➡️ `<parameter>haystack</parameter> (pajar) comienza con <parameter>needle</parameter> (aguja).`
created_at: 2025-03-23T01:50:43Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 9737e4b259e5673b055d4c8316d4c9e2892f984b Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: no -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-starts-with">
+ <refnamediv>
+  <refname>str_starts_with</refname>
+  <refpurpose>Determina si una string comienza con una substring dada</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>bool</type><methodname>str_starts_with</methodname>
+   <methodparam><type>string</type><parameter>haystack</parameter></methodparam>
+   <methodparam><type>string</type><parameter>needle</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Realiza una verificación sensible a mayúsculas y minúsculas que indica si
+   <parameter>haystack</parameter> comienza con <parameter>needle</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>haystack</parameter></term>
+     <listitem>
+      <para>
+       La string en la que se realiza la búsqueda.
path: reference/strings/functions/str-starts-with.xml
user: login: Marqitos
body: `La string en la que se realiza la búsqueda.`

➡️ `El string en la que se realiza la búsqueda.`
created_at: 2025-03-23T01:51:18Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 9737e4b259e5673b055d4c8316d4c9e2892f984b Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: no -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-starts-with">
+ <refnamediv>
+  <refname>str_starts_with</refname>
+  <refpurpose>Determina si una string comienza con una substring dada</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>bool</type><methodname>str_starts_with</methodname>
+   <methodparam><type>string</type><parameter>haystack</parameter></methodparam>
+   <methodparam><type>string</type><parameter>needle</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Realiza una verificación sensible a mayúsculas y minúsculas que indica si
+   <parameter>haystack</parameter> comienza con <parameter>needle</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>haystack</parameter></term>
+     <listitem>
+      <para>
+       La string en la que se realiza la búsqueda.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><parameter>needle</parameter></term>
+     <listitem>
+      <para>
+       La substring a buscar en <parameter>haystack</parameter>.
path: reference/strings/functions/str-starts-with.xml
user: login: Marqitos
body: `La substring a buscar en <parameter>haystack</parameter>.`

➡️ `El substring a buscar en <parameter>haystack</parameter>.`
created_at: 2025-03-23T01:51:54Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 9737e4b259e5673b055d4c8316d4c9e2892f984b Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: no -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-starts-with">
+ <refnamediv>
+  <refname>str_starts_with</refname>
+  <refpurpose>Determina si una string comienza con una substring dada</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>bool</type><methodname>str_starts_with</methodname>
+   <methodparam><type>string</type><parameter>haystack</parameter></methodparam>
+   <methodparam><type>string</type><parameter>needle</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Realiza una verificación sensible a mayúsculas y minúsculas que indica si
+   <parameter>haystack</parameter> comienza con <parameter>needle</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>haystack</parameter></term>
+     <listitem>
+      <para>
+       La string en la que se realiza la búsqueda.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><parameter>needle</parameter></term>
+     <listitem>
+      <para>
+       La substring a buscar en <parameter>haystack</parameter>.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Devuelve &true; si <parameter>haystack</parameter> comienza con
+   <parameter>needle</parameter>, de lo contrario &false;.
+  </para>
+ </refsect1>
+
+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title>Con una string vacía <literal>''</literal></title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+if (str_starts_with('abc', '')) {
+    echo "Todas las strings comienzan con la string vacía";
+}
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen role="php">
+<![CDATA[
+Todas las strings comienzan con la string vacía
+]]>
+    </screen>
+   </example>
+
+   <example>
+    <title>Demostración de la sensibilidad a mayúsculas y minúsculas</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$string = 'The lazy fox jumped over the fence';
+
+if (str_starts_with($string, 'The')) {
+    echo "La string comienza con 'The'\n";
path: reference/strings/functions/str-starts-with.xml
user: login: Marqitos
body: `echo "La string comienza con 'The'\n";`

➡️ `echo "El string comienza con 'The'\n";`
created_at: 2025-03-23T01:53:50Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 9737e4b259e5673b055d4c8316d4c9e2892f984b Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: no -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-starts-with">
+ <refnamediv>
+  <refname>str_starts_with</refname>
+  <refpurpose>Determina si una string comienza con una substring dada</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>bool</type><methodname>str_starts_with</methodname>
+   <methodparam><type>string</type><parameter>haystack</parameter></methodparam>
+   <methodparam><type>string</type><parameter>needle</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Realiza una verificación sensible a mayúsculas y minúsculas que indica si
+   <parameter>haystack</parameter> comienza con <parameter>needle</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>haystack</parameter></term>
+     <listitem>
+      <para>
+       La string en la que se realiza la búsqueda.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><parameter>needle</parameter></term>
+     <listitem>
+      <para>
+       La substring a buscar en <parameter>haystack</parameter>.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Devuelve &true; si <parameter>haystack</parameter> comienza con
+   <parameter>needle</parameter>, de lo contrario &false;.
+  </para>
+ </refsect1>
+
+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title>Con una string vacía <literal>''</literal></title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+if (str_starts_with('abc', '')) {
+    echo "Todas las strings comienzan con la string vacía";
+}
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen role="php">
+<![CDATA[
+Todas las strings comienzan con la string vacía
+]]>
+    </screen>
+   </example>
+
+   <example>
+    <title>Demostración de la sensibilidad a mayúsculas y minúsculas</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$string = 'The lazy fox jumped over the fence';
+
+if (str_starts_with($string, 'The')) {
+    echo "La string comienza con 'The'\n";
+}
+
+if (str_starts_with($string, 'the')) {
+    echo 'La string comienza con "the"';
path: reference/strings/functions/str-starts-with.xml
user: login: Marqitos
body: `echo 'La string comienza con "the"';`

➡️ `echo 'El string comienza con "the"';`
created_at: 2025-03-23T01:54:31Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 9737e4b259e5673b055d4c8316d4c9e2892f984b Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: no -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-starts-with">
+ <refnamediv>
+  <refname>str_starts_with</refname>
+  <refpurpose>Determina si una string comienza con una substring dada</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>bool</type><methodname>str_starts_with</methodname>
+   <methodparam><type>string</type><parameter>haystack</parameter></methodparam>
+   <methodparam><type>string</type><parameter>needle</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Realiza una verificación sensible a mayúsculas y minúsculas que indica si
+   <parameter>haystack</parameter> comienza con <parameter>needle</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>haystack</parameter></term>
+     <listitem>
+      <para>
+       La string en la que se realiza la búsqueda.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><parameter>needle</parameter></term>
+     <listitem>
+      <para>
+       La substring a buscar en <parameter>haystack</parameter>.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Devuelve &true; si <parameter>haystack</parameter> comienza con
+   <parameter>needle</parameter>, de lo contrario &false;.
+  </para>
+ </refsect1>
+
+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title>Con una string vacía <literal>''</literal></title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+if (str_starts_with('abc', '')) {
+    echo "Todas las strings comienzan con la string vacía";
+}
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen role="php">
+<![CDATA[
+Todas las strings comienzan con la string vacía
+]]>
+    </screen>
+   </example>
+
+   <example>
+    <title>Demostración de la sensibilidad a mayúsculas y minúsculas</title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$string = 'The lazy fox jumped over the fence';
+
+if (str_starts_with($string, 'The')) {
+    echo "La string comienza con 'The'\n";
+}
+
+if (str_starts_with($string, 'the')) {
+    echo 'La string comienza con "the"';
+} else {
+    echo '"the" no fue encontrado porque las mayúsculas y minúsculas no coinciden';
+}
+
+?>
+]]>
+    </programlisting>
+    &example.outputs;
+    <screen role="php">
+<![CDATA[
+La string comienza con 'The'
path: reference/strings/functions/str-starts-with.xml
user: login: Marqitos
body: `La string comienza con 'The'`

➡️ `El string comienza con 'The'`
created_at: 2025-03-23T01:54:57Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 57c83578be2f0ebf3528f1296040fe738dac37de Maintainer: PhilDaiguille Status: ready -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-increment">
+ <refnamediv>
+  <refname>str_increment</refname>
+  <refpurpose>Incrementa una string alfanumérica</refpurpose>
path: reference/strings/functions/str-increment.xml
user: login: Marqitos
body: `Incrementa una string alfanumérica`

➡️ `Incrementa un string alfanumérico`
created_at: 2025-03-23T01:55:49Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 57c83578be2f0ebf3528f1296040fe738dac37de Maintainer: PhilDaiguille Status: ready -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-increment">
+ <refnamediv>
+  <refname>str_increment</refname>
+  <refpurpose>Incrementa una string alfanumérica</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>string</type><methodname>str_increment</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Devuelve la string alfanumérica <acronym>ASCII</acronym> incrementada
path: reference/strings/functions/str-increment.xml
user: login: Marqitos
body: `Devuelve la string alfanumérica <acronym>ASCII</acronym> incrementada`

➡️ `Devuelve el string alfanumérica <acronym>ASCII</acronym> incrementado`
created_at: 2025-03-23T01:56:44Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 57c83578be2f0ebf3528f1296040fe738dac37de Maintainer: PhilDaiguille Status: ready -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-increment">
+ <refnamediv>
+  <refname>str_increment</refname>
+  <refpurpose>Incrementa una string alfanumérica</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>string</type><methodname>str_increment</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Devuelve la string alfanumérica <acronym>ASCII</acronym> incrementada
+   <parameter>string</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       La string a incrementar.
path: reference/strings/functions/str-increment.xml
user: login: Marqitos
body: `La string a incrementar.`

➡️ `El string a incrementar.`
created_at: 2025-03-23T01:57:24Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 57c83578be2f0ebf3528f1296040fe738dac37de Maintainer: PhilDaiguille Status: ready -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-increment">
+ <refnamediv>
+  <refname>str_increment</refname>
+  <refpurpose>Incrementa una string alfanumérica</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>string</type><methodname>str_increment</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Devuelve la string alfanumérica <acronym>ASCII</acronym> incrementada
+   <parameter>string</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       La string a incrementar.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Devuelve la string alfanumérica <acronym>ASCII</acronym> incrementada.
path: reference/strings/functions/str-increment.xml
user: login: Marqitos
body: `Devuelve la string alfanumérica <acronym>ASCII</acronym> incrementada.`

➡️ `Devuelve el string alfanumérico <acronym>ASCII</acronym> incrementado.`
created_at: 2025-03-23T01:58:05Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 57c83578be2f0ebf3528f1296040fe738dac37de Maintainer: PhilDaiguille Status: ready -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-increment">
+ <refnamediv>
+  <refname>str_increment</refname>
+  <refpurpose>Incrementa una string alfanumérica</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>string</type><methodname>str_increment</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Devuelve la string alfanumérica <acronym>ASCII</acronym> incrementada
+   <parameter>string</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       La string a incrementar.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Devuelve la string alfanumérica <acronym>ASCII</acronym> incrementada.
+  </para>
+ </refsect1>
+
+ <refsect1 role="errors">
+  &reftitle.errors;
+  <para>
+   Se lanza una excepción <classname>ValueError</classname> si
+   <parameter>string</parameter> está vacía.
path: reference/strings/functions/str-increment.xml
user: login: Marqitos
body: `<parameter>string</parameter> está vacía.`

➡️ `<parameter>string</parameter> está vacío.`
created_at: 2025-03-23T01:59:02Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 57c83578be2f0ebf3528f1296040fe738dac37de Maintainer: PhilDaiguille Status: ready -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-increment">
+ <refnamediv>
+  <refname>str_increment</refname>
+  <refpurpose>Incrementa una string alfanumérica</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>string</type><methodname>str_increment</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Devuelve la string alfanumérica <acronym>ASCII</acronym> incrementada
+   <parameter>string</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       La string a incrementar.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Devuelve la string alfanumérica <acronym>ASCII</acronym> incrementada.
+  </para>
+ </refsect1>
+
+ <refsect1 role="errors">
+  &reftitle.errors;
+  <para>
+   Se lanza una excepción <classname>ValueError</classname> si
+   <parameter>string</parameter> está vacía.
+  </para>
+  <para>
+   Se lanza una excepción <classname>ValueError</classname> si
+   <parameter>string</parameter> no es una cadena alfanumérica
+   <acronym>ASCII</acronym>.
+  </para>
path: reference/strings/functions/str-increment.xml
user: login: Marqitos
body: `<parameter>string</parameter> no es una cadena alfanumérica`

➡️ `<parameter>string</parameter> no es un string alfanumérico`
created_at: 2025-03-23T02:01:05Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 1bf3ed99f67e627624fca77c15601836b7febf65 Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: no -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-ends-with">
+ <refnamediv>
+  <refname>str_ends_with</refname>
+  <refpurpose>Determina si una cadena termina con una subcadena dada</refpurpose>
path: reference/strings/functions/str-ends-with.xml
user: login: Marqitos
body: `Determina si una cadena termina con una subcadena dada`

➡️ `Determina si un string termina con un substring dado`
created_at: 2025-03-23T02:03:26Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 1bf3ed99f67e627624fca77c15601836b7febf65 Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: no -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-ends-with">
+ <refnamediv>
+  <refname>str_ends_with</refname>
+  <refpurpose>Determina si una cadena termina con una subcadena dada</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>bool</type><methodname>str_ends_with</methodname>
+   <methodparam><type>string</type><parameter>haystack</parameter></methodparam>
+   <methodparam><type>string</type><parameter>needle</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Realiza una verificación sensible a mayúsculas y minúsculas que indica si
+   <parameter>haystack</parameter> termina con <parameter>needle</parameter>.
path: reference/strings/functions/str-ends-with.xml
user: login: Marqitos
body: En otras partes de la documentación, para usar el memotecnico, se especifica la traducción de los parámetros.
Cambialo solo si te parece adecuado.

`<parameter>haystack</parameter> termina con <parameter>needle</parameter>.`

➡️ `<parameter>haystack</parameter> (pajar) termina con <parameter>needle</parameter> (aguja).`
created_at: 2025-03-23T02:05:05Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 1bf3ed99f67e627624fca77c15601836b7febf65 Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: no -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-ends-with">
+ <refnamediv>
+  <refname>str_ends_with</refname>
+  <refpurpose>Determina si una cadena termina con una subcadena dada</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>bool</type><methodname>str_ends_with</methodname>
+   <methodparam><type>string</type><parameter>haystack</parameter></methodparam>
+   <methodparam><type>string</type><parameter>needle</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Realiza una verificación sensible a mayúsculas y minúsculas que indica si
+   <parameter>haystack</parameter> termina con <parameter>needle</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>haystack</parameter></term>
+     <listitem>
+      <para>
+       La cadena en la que se realiza la búsqueda.
path: reference/strings/functions/str-ends-with.xml
user: login: Marqitos
body: `La cadena en la que se realiza la búsqueda.`

➡️ `El string en la que se realiza la búsqueda.`
created_at: 2025-03-23T02:05:41Z
author_association: MEMBER
path: reference/strings/functions/str-ends-with.xml
user: login: Marqitos
body: Mira que haya coherencia en las traducciones de string y substring, entre los archivos `str-contains.xml`, `str-ends-with.xml` y `str-starts-with.xml`
created_at: 2025-03-23T02:08:13Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 57c83578be2f0ebf3528f1296040fe738dac37de Maintainer: PhilDaiguille Status: ready -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-decrement">
+ <refnamediv>
+  <refname>str_decrement</refname>
+  <refpurpose>Decrementa una string alfanumérica</refpurpose>
path: reference/strings/functions/str-decrement.xml
user: login: Marqitos
body: `Decrementa una string alfanumérica`

➡️ `Decrementa un string alfanumérico`
created_at: 2025-03-23T02:09:08Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 57c83578be2f0ebf3528f1296040fe738dac37de Maintainer: PhilDaiguille Status: ready -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-decrement">
+ <refnamediv>
+  <refname>str_decrement</refname>
+  <refpurpose>Decrementa una string alfanumérica</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>string</type><methodname>str_decrement</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Devuelve la string alfanumérica <acronym>ASCII</acronym> decrementada
path: reference/strings/functions/str-decrement.xml
user: login: Marqitos
body: `Devuelve la string alfanumérica <acronym>ASCII</acronym> decrementada`

➡️ `Devuelve el string alfanumérico <acronym>ASCII</acronym> decrementado`
created_at: 2025-03-23T02:09:43Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 57c83578be2f0ebf3528f1296040fe738dac37de Maintainer: PhilDaiguille Status: ready -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-decrement">
+ <refnamediv>
+  <refname>str_decrement</refname>
+  <refpurpose>Decrementa una string alfanumérica</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>string</type><methodname>str_decrement</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Devuelve la string alfanumérica <acronym>ASCII</acronym> decrementada
+   <parameter>string</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       La string a decrementar.
path: reference/strings/functions/str-decrement.xml
user: login: Marqitos
body: `La string a decrementar.`

`El string a decrementar.`
created_at: 2025-03-23T02:10:24Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 57c83578be2f0ebf3528f1296040fe738dac37de Maintainer: PhilDaiguille Status: ready -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-decrement">
+ <refnamediv>
+  <refname>str_decrement</refname>
+  <refpurpose>Decrementa una string alfanumérica</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>string</type><methodname>str_decrement</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Devuelve la string alfanumérica <acronym>ASCII</acronym> decrementada
+   <parameter>string</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       La string a decrementar.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Devuelve la string alfanumérica <acronym>ASCII</acronym> decrementada.
path: reference/strings/functions/str-decrement.xml
user: login: Marqitos
body: `Devuelve la string alfanumérica <acronym>ASCII</acronym> decrementada.`

➡️ `Devuelve el string alfanumérico <acronym>ASCII</acronym> decrementado.`
created_at: 2025-03-23T02:11:02Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 57c83578be2f0ebf3528f1296040fe738dac37de Maintainer: PhilDaiguille Status: ready -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-decrement">
+ <refnamediv>
+  <refname>str_decrement</refname>
+  <refpurpose>Decrementa una string alfanumérica</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>string</type><methodname>str_decrement</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Devuelve la string alfanumérica <acronym>ASCII</acronym> decrementada
+   <parameter>string</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       La string a decrementar.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Devuelve la string alfanumérica <acronym>ASCII</acronym> decrementada.
+  </para>
+ </refsect1>
+
+ <refsect1 role="errors">
+  &reftitle.errors;
+  <para>
+   Se lanza una excepción <classname>ValueError</classname> si
+   <parameter>string</parameter> está vacía.
path: reference/strings/functions/str-decrement.xml
user: login: Marqitos
body: `<parameter>string</parameter> está vacía.`

➡️ `<parameter>string</parameter> está vacío.`
created_at: 2025-03-23T02:11:37Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 57c83578be2f0ebf3528f1296040fe738dac37de Maintainer: PhilDaiguille Status: ready -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-decrement">
+ <refnamediv>
+  <refname>str_decrement</refname>
+  <refpurpose>Decrementa una string alfanumérica</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>string</type><methodname>str_decrement</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Devuelve la string alfanumérica <acronym>ASCII</acronym> decrementada
+   <parameter>string</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       La string a decrementar.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Devuelve la string alfanumérica <acronym>ASCII</acronym> decrementada.
+  </para>
+ </refsect1>
+
+ <refsect1 role="errors">
+  &reftitle.errors;
+  <para>
+   Se lanza una excepción <classname>ValueError</classname> si
+   <parameter>string</parameter> está vacía.
+  </para>
+  <para>
+   Se lanza una excepción <classname>ValueError</classname> si
+   <parameter>string</parameter> no es una string alfanumérica
path: reference/strings/functions/str-decrement.xml
user: login: Marqitos
body: `<parameter>string</parameter> no es una string alfanumérica`

➡️ `<parameter>string</parameter> no es un string alfanumérico`

created_at: 2025-03-23T02:12:23Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 57c83578be2f0ebf3528f1296040fe738dac37de Maintainer: PhilDaiguille Status: ready -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-decrement">
+ <refnamediv>
+  <refname>str_decrement</refname>
+  <refpurpose>Decrementa una string alfanumérica</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>string</type><methodname>str_decrement</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Devuelve la string alfanumérica <acronym>ASCII</acronym> decrementada
+   <parameter>string</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       La string a decrementar.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Devuelve la string alfanumérica <acronym>ASCII</acronym> decrementada.
+  </para>
+ </refsect1>
+
+ <refsect1 role="errors">
+  &reftitle.errors;
+  <para>
+   Se lanza una excepción <classname>ValueError</classname> si
+   <parameter>string</parameter> está vacía.
+  </para>
+  <para>
+   Se lanza una excepción <classname>ValueError</classname> si
+   <parameter>string</parameter> no es una string alfanumérica
+   <acronym>ASCII</acronym>.
+  </para>
+  <para>
+   Se lanza una excepción <classname>ValueError</classname> si
+   <parameter>string</parameter> no puede ser decrementada.
path: reference/strings/functions/str-decrement.xml
user: login: Marqitos
body: `<parameter>string</parameter> no puede ser decrementada.`

`<parameter>string</parameter> no puede ser decrementado.`
created_at: 2025-03-23T02:13:00Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 9737e4b259e5673b055d4c8316d4c9e2892f984b Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: no -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-contains">
+ <refnamediv>
+  <refname>str_contains</refname>
+  <refpurpose>Determina si una cadena contiene una subcadena dada</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>bool</type><methodname>str_contains</methodname>
+   <methodparam><type>string</type><parameter>haystack</parameter></methodparam>
+   <methodparam><type>string</type><parameter>needle</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Realiza una verificación sensible a mayúsculas y minúsculas para indicar si <parameter>needle</parameter>
+   está contenida en <parameter>haystack</parameter>.
path: reference/strings/functions/str-contains.xml
user: login: Marqitos
body: En otras partes de la documentación, para usar el memotecnico, se especifica la traducción de los parámetros.
Cambialo solo si te parece adecuado.

```xml
Realiza una verificación sensible a mayúsculas y minúsculas para indicar si <parameter>needle</parameter>
está contenida en <parameter>haystack</parameter>.
```

➡️
```xml
Realiza una verificación sensible a mayúsculas y minúsculas para indicar si <parameter>needle</parameter> (aguja)
está contenida en <parameter>haystack</parameter> (pajar).
```
created_at: 2025-03-23T02:15:16Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 9737e4b259e5673b055d4c8316d4c9e2892f984b Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: no -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-contains">
+ <refnamediv>
+  <refname>str_contains</refname>
+  <refpurpose>Determina si una cadena contiene una subcadena dada</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>bool</type><methodname>str_contains</methodname>
+   <methodparam><type>string</type><parameter>haystack</parameter></methodparam>
+   <methodparam><type>string</type><parameter>needle</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Realiza una verificación sensible a mayúsculas y minúsculas para indicar si <parameter>needle</parameter>
+   está contenida en <parameter>haystack</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>haystack</parameter></term>
+     <listitem>
+      <para>
+       La cadena en la que se realiza la búsqueda.
path: reference/strings/functions/str-contains.xml
user: login: Marqitos
body: `La cadena en la que se realiza la búsqueda.`

➡️ `El string en la que se realiza la búsqueda.`
created_at: 2025-03-23T02:15:54Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 9737e4b259e5673b055d4c8316d4c9e2892f984b Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: no -->
+<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.str-contains">
+ <refnamediv>
+  <refname>str_contains</refname>
+  <refpurpose>Determina si una cadena contiene una subcadena dada</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>bool</type><methodname>str_contains</methodname>
+   <methodparam><type>string</type><parameter>haystack</parameter></methodparam>
+   <methodparam><type>string</type><parameter>needle</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Realiza una verificación sensible a mayúsculas y minúsculas para indicar si <parameter>needle</parameter>
+   está contenida en <parameter>haystack</parameter>.
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>haystack</parameter></term>
+     <listitem>
+      <para>
+       La cadena en la que se realiza la búsqueda.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><parameter>needle</parameter></term>
+     <listitem>
+      <para>
+       La subcadena a buscar en <parameter>haystack</parameter>.
+      </para>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   Devuelve &true; si <parameter>needle</parameter> está en
+   <parameter>haystack</parameter>, de lo contrario &false;.
+  </para>
+ </refsect1>
+
+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title>Con una cadena vacía <literal>''</literal></title>
path: reference/strings/functions/str-contains.xml
user: login: Marqitos
body: `Con una cadena vacía <literal>''</literal>`

➡️ `Con un string vacío <literal>''</literal>`
created_at: 2025-03-23T02:17:13Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Revision$ -->
+<!-- EN-Revision: e35fbbaa52702ebf45c5e7284351e136ed67f3bb Maintainer: PhilDaiguille Status: ready -->
+<!-- Reviewed: yes -->
+<refentry xml:id="function.parse-str" xmlns="http://docbook.org/ns/docbook">
+ <refnamediv>
+  <refname>parse_str</refname>
+  <refpurpose>Analiza una string de una variable</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+  &reftitle.description;
+  <methodsynopsis>
+   <type>void</type><methodname>parse_str</methodname>
+   <methodparam><type>string</type><parameter>string</parameter></methodparam>
+   <methodparam><type>array</type><parameter role="reference">result</parameter></methodparam>
+  </methodsynopsis>
+  <para>
+   Analiza la string <parameter>string</parameter> como si
+   se tratara de los parámetros pasados a través de la URL. Todas las variables
+   que se encuentran en ella se crean con sus valores respectivos (o en el array si <parameter>result</parameter> es proporcionado).
+  </para>
+ </refsect1>
+
+ <refsect1 role="parameters">
+  &reftitle.parameters;
+  <para>
+   <variablelist>
+    <varlistentry>
+     <term><parameter>string</parameter></term>
+     <listitem>
+      <para>
+       La string de entrada.
+      </para>
+     </listitem>
+    </varlistentry>
+    <varlistentry>
+     <term><parameter>result</parameter></term>
+     <listitem>
+      <para>
+       Si el segundo argumento <parameter>result</parameter> es proporcionado,
+       las variables se almacenarán en él, en forma de un array indexado.
+      </para>
+      <warning>
+       <para>
+        El uso de esta función sin el argumento <parameter>result</parameter>
+        está muy <emphasis>desaconsejado</emphasis> y <emphasis>desaconsejado</emphasis>
+        a partir de PHP 7.2.
+        A partir de PHP 8.0.0, el argumento <parameter>result</parameter> es <emphasis>obligatorio</emphasis>.
+       </para>
+      </warning>
+     </listitem>
+    </varlistentry>
+   </variablelist>
+  </para>
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+  &reftitle.returnvalues;
+  <para>
+   &return.void;
+  </para>
+ </refsect1>
+
+ <refsect1 role="changelog">
+  &reftitle.changelog;
+  <para>
+   <informaltable>
+    <tgroup cols="2">
+     <thead>
+      <row>
+       <entry>&Version;</entry>
+       <entry>&Description;</entry>
+      </row>
+     </thead>
+     <tbody>
+     <row>
+      <entry>8.0.0</entry>
+      <entry>
+       <parameter>result</parameter> ya no es opcional.
+      </entry>
+     </row>
+      <row>
+       <entry>7.2.0</entry>
+       <entry>
+        El uso de <function>parse_str</function> sin el segundo argumento
+        emite una nota <constant>E_DEPRECATED</constant>.
+       </entry>
+      </row>
+     </tbody>
+    </tgroup>
+   </informaltable>
+  </para>
+ </refsect1>
+
+ <refsect1 role="examples">
+  &reftitle.examples;
+  <para>
+   <example>
+    <title>Ejemplo con <function>parse_str</function></title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+$str = "first=value&arr[]=foo+bar&arr[]=baz";
+
+// Recomendado
+parse_str($str, $output);
+echo $output['first'];  // value
+echo $output['arr'][0]; // foo bar
+echo $output['arr'][1]; // baz
+
+// Desaconsejado
+parse_str($str);
+echo $first;  // value
+echo $arr[0]; // foo bar
+echo $arr[1]; // baz
+?>
+]]>
+    </programlisting>
+   </example>
+  </para>
+  <para>
+   Debido a que las variables en PHP no pueden tener puntos y espacios en sus nombres, estos se convierten en guiones bajos. Lo mismo se aplica a la denominación de los nombres de claves respectivos en caso de uso de esta función con el argumento de <parameter>result</parameter>.
+   <example>
+    <title>Deformación de nombres por <function>parse_str</function></title>
+    <programlisting role="php">
+<![CDATA[
+<?php
+parse_str("My Value=Something");
+echo $My_Value; // Something
+
+parse_str("My Value=Something", $output);
+echo $output['My_Value']; // Something
+?>
+]]>
+    </programlisting>
+   </example>
+  </para>
+ </refsect1>
+  <refsect1 role="notes">
+  &reftitle.notes;
+
path: reference/strings/functions/parse-str.xml
user: login: Marqitos
body: Creo q me expresé mal, faltaba una, pero no sobraba ni sustituía a ninguna de las que estaban.

Ya lo corrijo yo.
created_at: 2025-03-23T13:57:42Z
author_association: MEMBER

PR comments:
user: login: PhilDaiguille
created_at: 2025-03-23T09:01:31Z
body: He notado que en la documentación, los traductores anteriores a menudo tradujeron 'string' como 'cadena'. Entonces, me pregunto si hoy en día, en la comunidad hispanohablante, la traducción más sencilla y comprensible no sería 'cadena de caracteres' para la versión en español.

Bueno, ya es demasiado tarde, nos quedamos con el término "string".
author_association: CONTRIBUTOR
user: login: Marqitos
created_at: 2025-03-23T12:04:48Z
body: Ya, yo me remito a las notas que hay en el archivo `diccionario.txt`:

---
[...]
```plaintext
***  Misc  ***
refer to..........: consulte
array.............: array (no traducir: matriz)
string............: string (no traducir: cadena)
integer...........: integer (no traducir: entero)
bool..............: bool (no traducir: boleano)
float.............: float (no tradudir: flotante)

```
[...]

Nota:
[...]
Hay palabras que no hace falta traducirlas, he visto traducido on, off, true, false ¡no hace falta!
Todo el mundo sabe que es on y off, online, offline.
Y en programación todo el mundo sabe que es true y false, Array, bool, integer y string.

[...]

---

Lo estoy haciendo así, por intentar hacer caso a las notas que hay sobre traducción.
author_association: MEMBER
user: login: Marqitos
created_at: 2025-03-23T13:41:00Z
body: Al final, tras tantas notas, me acabé quedando con la duda de un string o una string 😅.

---

En español, aunque el término "string" proviene del inglés, se ha adoptado en el ámbito de la programación. La Real Academia Española (RAE) no ha establecido una norma específica para este anglicismo, pero en la práctica, se suele usar en masculino: "un string".

Esto se debe a que en español, muchos términos técnicos adoptados de otros idiomas tienden a seguir el género masculino, especialmente si no hay una palabra equivalente en español que determine el género.

Así que, en resumen, lo más común y aceptado es decir "un string"

---

Ejemplo:

[Medium - ¿Qué son strings y qué podemos hacer con ellos?](https://medium.com/laboratoria-how-to/qu%C3%A9-son-strings-y-qu%C3%A9-podemos-hacer-con-ellos-526abd260c0e)
author_association: MEMBER
user: login: PhilDaiguille
created_at: 2025-03-23T13:50:58Z
body: ¡Ah, ok! Súper interesante, gracias por la info.
author_association: CONTRIBUTOR
user: login: Marqitos
created_at: 2025-03-23T16:57:25Z
body: Podrías comprobar las traducciónes de:

- reference/pcre/pattern.syntax.xml
- reference/strings/functions/strrev.xml
author_association: MEMBER
user: login: Marqitos
created_at: 2025-03-23T17:25:23Z
body: Otra cosa, en el archivo `reference/pcre/pattern.syntax.xml`, en la línea 514, no he seguido el texto de la documentación en inglés literal, ya que me pareció correcto el cambio ya que es la documentación en español.
He traducido:

```xml
  <para>
   A "word" character is any letter or digit or the underscore
   character, that is, any character which can be part of a
   Perl "<emphasis>word</emphasis>". The definition of letters and digits is
   controlled by PCRE's character tables, and may vary if locale-specific
   matching is taking place. For example, in the "fr" (French) locale, some
   character codes greater than 128 are used for accented letters,
   and these are matched by <literal>\w</literal>.
  </para>
```
a

```xml
  <para>
   Un carácter "palabra" es cualquier letra o dígito o el carácter
   subrayado, es decir, cualquier carácter que pueda ser parte de una
   "<emphasis>palabra</emphasis>" Perl. La definición de letras y dígitos está
   controlada por las tablas de caracteres de PCRE, y pueden variar si  tiene lugar
   la comparación de configuraciones regionales específicas. Por ejemplo, en la configuración regional
   "es" (Español), algunos códigos de caracteres mayores que 128 se usan para letras acentuadas,
   y éstos se comparan por <literal>\w</literal>.
  </para>
```

Cambiando la referencia la configuración regional "fr" a "es", ya que ambas utilizan `character codes greater than 128 are used for accented letters` / `caracteres mayores que 128 se usan para letras acentuadas`.

- @Girgias 
- @PhilDaiguille 

Si no os parece correcto el cambio, lo traduzco literal.
author_association: MEMBER