downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Our source is open

The syntax highlighted source is automatically generated by PHP from the plaintext script. If you're interested in what's behind the several functions we used, you can always take a look at the source of the following files:

Of course, if you want to see the source of this page, we have it available. You can also browse the SVN repository for this website on svn.php.net.

Source of: /manual/en/regexp.reference.unicode.php

<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$PARENTS = array();
include_once
dirname(__FILE__) ."/toc/reference.pcre.pattern.syntax.inc";
$setup = array (
 
'home' =>
  array (
   
0 => 'index.php',
   
1 => 'PHP Manual',
  ),
 
'head' =>
  array (
   
0 => 'UTF-8',
   
1 => 'en',
  ),
 
'this' =>
  array (
   
0 => 'regexp.reference.unicode.php',
   
1 => 'Unicode character properties',
  ),
 
'up' =>
  array (
   
0 => 'reference.pcre.pattern.syntax.php',
   
1 => 'Pattern Syntax',
  ),
 
'prev' =>
  array (
   
0 => 'regexp.reference.backslash.php',
   
1 => 'Backslash',
  ),
 
'next' =>
  array (
   
0 => 'regexp.reference.circudollar.php',
   
1 => 'Circumflex and dollar',
  ),
);
$setup["toc"] = $TOC;
$setup["parents"] = $PARENTS;
manual_setup($setup);

manual_header();
?>
<div id="regexp.reference.unicode" class="section">
     <h2 class="title">Unicode character properties</h2>
     <p class="para">
      Since PHP 4.4.0 and 5.1.0, three
      additional escape sequences to match generic character types are available
      when <em class="emphasis">UTF-8 mode</em> is selected. They are:
     </p>
     <dl>

      <dt class="varlistentry">

       <span class="term"><em class="emphasis">\p{xx}</em></span>

       </dt><dd class="listitem">
<span class="simpara">a character with the xx property</span></dd>

     
      <dt class="varlistentry">

       <span class="term"><em class="emphasis">\P{xx}</em></span>

       </dt><dd class="listitem">
<span class="simpara">a character without the xx property</span></dd>

     
      <dt class="varlistentry">

       <span class="term"><em class="emphasis">\X</em></span>

       </dt><dd class="listitem">
<span class="simpara">an extended Unicode sequence</span></dd>

     
     </dl>

     <p class="para">
      The property names represented by <i>xx</i> above are limited
      to the Unicode general category properties. Each character has exactly one
      such property, specified by a two-letter abbreviation. For compatibility with
      Perl, negation can be specified by including a circumflex between the
      opening brace and the property name. For example, <i>\p{^Lu}</i>
      is the same as <i>\P{Lu}</i>.
     </p>
     <p class="para">
      If only one letter is specified with <i>\p</i> or
      <i>\P</i>, it includes all the properties that start with that
      letter. In this case, in the absence of negation, the curly brackets in the
      escape sequence are optional; these two examples have the same effect:
     </p>
     <pre class="literallayout">
      \p{L}
      \pL
     </pre>
     <table class="doctable table">
      <caption><b>Supported property codes</b></caption>
     
       <tbody valign="middle" class="tbody">
        <tr valign="middle"><td align="left"><i>C</i></td><td align="left">Other</td></tr>

        <tr valign="middle"><td align="left"><i>Cc</i></td><td align="left">Control</td></tr>

        <tr valign="middle"><td align="left"><i>Cf</i></td><td align="left">Format</td></tr>

        <tr valign="middle"><td align="left"><i>Cn</i></td><td align="left">Unassigned</td></tr>

        <tr valign="middle"><td align="left"><i>Co</i></td><td align="left">Private use</td></tr>

        <tr valign="middle"><td align="left"><i>Cs</i></td><td align="left">Surrogate</td></tr>

        <tr valign="middle"><td align="left"><i>L</i></td><td align="left">Letter</td></tr>

        <tr valign="middle"><td align="left"><i>Ll</i></td><td align="left">Lower case letter</td></tr>

        <tr valign="middle"><td align="left"><i>Lm</i></td><td align="left">Modifier letter</td></tr>

        <tr valign="middle"><td align="left"><i>Lo</i></td><td align="left">Other letter</td></tr>

        <tr valign="middle"><td align="left"><i>Lt</i></td><td align="left">Title case letter</td></tr>

        <tr valign="middle"><td align="left"><i>Lu</i></td><td align="left">Upper case letter</td></tr>

        <tr valign="middle"><td align="left"><i>M</i></td><td align="left">Mark</td></tr>

        <tr valign="middle"><td align="left"><i>Mc</i></td><td align="left">Spacing mark</td></tr>

        <tr valign="middle"><td align="left"><i>Me</i></td><td align="left">Enclosing mark</td></tr>

        <tr valign="middle"><td align="left"><i>Mn</i></td><td align="left">Non-spacing mark</td></tr>

        <tr valign="middle"><td align="left"><i>N</i></td><td align="left">Number</td></tr>

        <tr valign="middle"><td align="left"><i>Nd</i></td><td align="left">Decimal number</td></tr>

        <tr valign="middle"><td align="left"><i>Nl</i></td><td align="left">Letter number</td></tr>

        <tr valign="middle"><td align="left"><i>No</i></td><td align="left">Other number</td></tr>

        <tr valign="middle"><td align="left"><i>P</i></td><td align="left">Punctuation</td></tr>

        <tr valign="middle"><td align="left"><i>Pc</i></td><td align="left">Connector punctuation</td></tr>

        <tr valign="middle"><td align="left"><i>Pd</i></td><td align="left">Dash punctuation</td></tr>

        <tr valign="middle"><td align="left"><i>Pe</i></td><td align="left">Close punctuation</td></tr>

        <tr valign="middle"><td align="left"><i>Pf</i></td><td align="left">Final punctuation</td></tr>

        <tr valign="middle"><td align="left"><i>Pi</i></td><td align="left">Initial punctuation</td></tr>

        <tr valign="middle"><td align="left"><i>Po</i></td><td align="left">Other punctuation</td></tr>

        <tr valign="middle"><td align="left"><i>Ps</i></td><td align="left">Open punctuation</td></tr>

        <tr valign="middle"><td align="left"><i>S</i></td><td align="left">Symbol</td></tr>

        <tr valign="middle"><td align="left"><i>Sc</i></td><td align="left">Currency symbol</td></tr>

        <tr valign="middle"><td align="left"><i>Sk</i></td><td align="left">Modifier symbol</td></tr>

        <tr valign="middle"><td align="left"><i>Sm</i></td><td align="left">Mathematical symbol</td></tr>

        <tr valign="middle"><td align="left"><i>So</i></td><td align="left">Other symbol</td></tr>

        <tr valign="middle"><td align="left"><i>Z</i></td><td align="left">Separator</td></tr>

        <tr valign="middle"><td align="left"><i>Zl</i></td><td align="left">Line separator</td></tr>

        <tr valign="middle"><td align="left"><i>Zp</i></td><td align="left">Paragraph separator</td></tr>

        <tr valign="middle"><td align="left"><i>Zs</i></td><td align="left">Space separator</td></tr>

       </tbody>
     
     </table>

     <p class="para">
      Extended properties such as &quot;Greek&quot; or &quot;InMusicalSymbols&quot; are not
      supported by PCRE.
     </p>
     <p class="para">
      Specifying case-insensitive (caseless) matching does not affect these escape sequences.
      For example, <i>\p{Lu}</i> always matches only upper case letters.
     </p>
     <p class="para">
      The <i>\X</i> escape matches any number of Unicode characters
      that form an extended Unicode sequence. <i>\X</i> is equivalent
      to <i>(?&gt;\PM\pM*)</i>.
     </p>
     <p class="para">
      That is, it matches a character without the &quot;mark&quot; property, followed
      by zero or more characters with the &quot;mark&quot; property, and treats the
      sequence as an atomic group (see below). Characters with the &quot;mark&quot;
      property are typically accents that affect the preceding character.
     </p>
     <p class="para">
      Matching characters by Unicode property is not fast, because PCRE has
      to search a structure that contains data for over fifteen thousand
      characters. That is why the traditional escape sequences such as
      <i>\d</i> and <i>\w</i> do not use Unicode properties
      in PCRE.
     </p>
    </div><?php manual_footer(); ?>
 
show source | credits | sitemap | contact | advertising | mirror sites