Skip to content

Commit

Permalink
Update array/pcre
Browse files Browse the repository at this point in the history
  • Loading branch information
mowangjuanzi committed Jan 17, 2025
1 parent 0fac33c commit dd15d44
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 41 deletions.
55 changes: 29 additions & 26 deletions reference/array/functions/array-unique.xml
Original file line number Diff line number Diff line change
@@ -1,35 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 3ba15fd3dfb8196a1762b1a21a14311e0279284b Maintainer: HonestQiao Status: ready -->
<!-- EN-Revision: 651fad6c6677036edd2871bb78199e17586a3acd Maintainer: HonestQiao Status: ready -->
<!-- CREDITS: mowangjuanzi, Luffy -->
<refentry xml:id="function.array-unique" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>array_unique</refname>
<refpurpose>移除数组中重复的值</refpurpose>
</refnamediv>
<refnamediv>
<refname>array_unique</refname>
<refpurpose>移除数组中重复的值</refpurpose>
</refnamediv>

<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>array</type><methodname>array_unique</methodname>
<methodparam><type>array</type><parameter>array</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>flags</parameter><initializer><constant>SORT_STRING</constant></initializer></methodparam>
</methodsynopsis>
<para>
<function>array_unique</function> 接受
<parameter>array</parameter> 作为输入并返回没有重复值的新数组。
</para>
<para>
注意键名保留不变。如果在指定了 <parameter>flags</parameter> 时存在多个相等的元素,
会保留第一个相等的元素的键(key)和值(value)。
</para>
<note>
<simpara>
当且仅当
<literal>(string) $elem1 === (string) $elem2</literal> 时两个单元被认为相同。
例如,字符串表达一样时,会使用首个元素。
</simpara>
</note>
</refsect1>
<para>
<function>array_unique</function> 接受
<parameter>array</parameter> 作为输入并返回没有重复值的新数组。
</para>
<para>
注意键名保留不变。如果在指定了 <parameter>flags</parameter> 时存在多个相等的元素,会保留第一个相等的元素的键(key)和值(value)。
</para>
<note>
<simpara>
当且仅当 <literal>(string) $elem1 === (string) $elem2</literal>
时两个单元被认为相同。例如,字符串表达一样时,会使用首个元素。
</simpara>
</note>
</refsect1>

<refsect1 role="parameters">
&reftitle.parameters;
Expand Down Expand Up @@ -110,13 +109,15 @@
&reftitle.examples;
<para>
<example>
<title><function>array_unique</function> 例子</title>
<title><function>array_unique</function> 示例</title>
<programlisting role="php">
<![CDATA[
<?php
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$input = ["a" => "green", "red", "b" => "green", "blue", "red"];
$result = array_unique($input);
print_r($result);
?>
]]>
</programlisting>
Expand All @@ -139,9 +140,11 @@ Array
<programlisting role="php">
<![CDATA[
<?php
$input = array(4, "4", "3", 4, 3, "3");
$input = [4, "4", "3", 4, 3, "3"];
$result = array_unique($input);
var_dump($result);
?>
]]>
</programlisting>
Expand All @@ -162,12 +165,12 @@ array(2) {
&reftitle.notes;
<note>
<simpara>
注意, <function>array_unique</function> 不能应用于多维数组。
注意,<function>array_unique</function> 不能应用于多维数组。
</simpara>
</note>
</refsect1>

<refsect1 role="seealso">
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
Expand Down
4 changes: 2 additions & 2 deletions reference/pcre/functions/preg-split.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 41c8533ff5a8f93ba9fdf0732d05dd5ab79864c9 Maintainer: daijie Status: ready -->
<!-- EN-Revision: bb66ce4d449049730d4967ce74fb68f15a138612 Maintainer: daijie Status: ready -->
<!-- CREDITS: mowangjuanzi -->
<refentry xml:id="function.preg-split" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
Expand Down Expand Up @@ -223,7 +223,7 @@ Array
<simplelist>
<member><link linkend="pcre.pattern">PCRE 模式</link></member>
<member><function>preg_quote</function></member>
<member><function>implode</function></member>
<member><function>explode</function></member>
<member><function>preg_match</function></member>
<member><function>preg_match_all</function></member>
<member><function>preg_replace</function></member>
Expand Down
20 changes: 19 additions & 1 deletion reference/pcre/pattern.modifiers.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 288ea761f5a8e7c685fe7f6fce2d7de0a87b31bd Maintainer: Luffy Status: ready -->
<!-- EN-Revision: b5aa3464c8817645633dc4364e1ac2d7b92c5b3f Maintainer: Luffy Status: ready -->
<!-- CREDITS: mowangjuanzi -->
<article xml:id="reference.pcre.pattern.modifiers" xmlns="http://docbook.org/ns/docbook">
<title>模式修饰符</title>
<titleabbrev>正则表达式模式中可用的模式修饰符</titleabbrev>
Expand Down Expand Up @@ -143,6 +144,23 @@
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis>r</emphasis> (<literal>PCRE2_EXTRA_CASELESS_RESTRICT</literal>)</term>
<listitem>
<simpara>
当 <emphasis>u</emphasis>(<literal>PCRE_UTF8</literal>) 和
<emphasis>i</emphasis>(<literal>PCRE_CASELESS</literal>)生效时,此修饰符可防止跨
ASCII 和非 ASCII 字符进行匹配。
</simpara>
<simpara>
例如,<code>preg_match('/\x{212A}/iu', "K")</code> 匹配开尔文符号 <literal>K</literal>(U+212A)。当使用
<emphasis>r</emphasis>(preg_match('/\x{212A}/iur', "K"))时,不会匹配。
</simpara>
<simpara>
自 PHP 8.4.0 起可用。
</simpara>
</listitem>
</varlistentry>
</variablelist>
</blockquote>
</para>
Expand Down
29 changes: 17 additions & 12 deletions reference/pcre/pattern.syntax.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 587830d5d261802148a160a59059dd8d76385fd2 Maintainer: daijie Status: ready -->
<!-- EN-Revision: 0e4868392a619db8f148cb4c56cd57e92f6a3d2d Maintainer: daijie Status: ready -->
<!-- CREDITS: mowangjuanzi -->
<!-- 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">
Expand All @@ -10,10 +10,8 @@
<section xml:id="regexp.introduction">
<title>简介</title>
<para>
下面描述的是 PCRE 支持的正则表达式语法和语义。正则表达式在 perl 的文档
和另外一些书籍中也有讨论, 其中一些会有丰富的示例。O'Reilly(ISBN 1-56592-257-3)
出版的 Jeffrey Friedl 的《精通正则表达式》一书非常详细的讨论了这些内容。
这里的描述仅作为一个参考手册。
本节描述的是 PCRE 支持的正则表达式语法和语义。正则表达式在 perl 的文档和另外一些书籍中也有讨论, 其中一些会有丰富的示例。O'Reilly(ISBN
1-56592-257-3)出版的 Jeffrey Friedl 的《精通正则表达式》一书非常详细的讨论了这些内容。这里的描述仅作为一个参考手册。
</para>
<para>
正则表达式是一个从左到右匹配目标字符串的模式。大多数字符自身就代表一个匹配
Expand Down Expand Up @@ -1392,15 +1390,22 @@
<literal>\d{8}</literal>

则只能匹配 8 个数字。
左花括号出现在不允许使用量词的位置或者与量词语法不匹配时,
被认为是一个普通字符,对它自身进行原文匹配。 比如,{,6}就不是一个量词,
会按照原文匹配四个字符 ”{,6}”。

</para>
<simpara>
PHP 8.4.0 之前,如果左花括号出现在不允许使用量词的位置,或者与量词语法不匹配时,则将其视为普通字符。例如
<literal>{,6}</literal> 不是量词,而是四个字符的文字字符串。

自 PHP 8.4.0 起,PCRE 扩展捆绑 PCRE2 10.44 版本,允许使用诸如 <literal>\d{,8}</literal>
之类的模式,并且将其解释为 <literal>\d{0,8}</literal>。

此外,自 PHP 8.4.0 起,量词周围允许使用空格字符,例如 <literal>\d{0 , 8}</literal> 和 <literal>\d{ 0 , 8 }</literal>。
</simpara>
<para>
量词 {0} 是被授权的,它会导致的行为是认为前面的项和量词不存在
允许使用量词 {0},会导致表达式的行为就像前一项和量词不存在一样
</para>
<para>
为了方便(以及历史的兼容性),最常用的三个量词都有单字符缩写
为了方便(和历史兼容性),三个最常用的量词都有单字符缩写
<table>
<title>单字符量词</title>
<tgroup cols="2">
Expand Down Expand Up @@ -1848,7 +1853,7 @@
<informalexample>
<programlisting>
<![CDATA[
( \( )? [^()]+ (?(1) \) )
( \( )? [^()]+ (?(1) \) )
]]>
</programlisting>
</informalexample>
Expand All @@ -1875,7 +1880,7 @@
<programlisting>
<![CDATA[
(?(?=[^a-z]*[a-z])
\d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} )
\d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} )
]]>
</programlisting>
</informalexample>
Expand Down

0 comments on commit dd15d44

Please sign in to comment.