ģʽ���η�

�����г��˵�ǰ���õ� PCRE ���η����������ᵽ�������� PCRE �ڲ���Щ���η������ơ� ģʽ���η��еĿո񣬻��з��ᱻ���ԣ������ַ��ᵼ�´���

i (PCRE_CASELESS)
���������������η���ģʽ�е���ĸ����д�Сд������ƥ�䡣
m (PCRE_MULTILINE)
Ĭ������£�PCRE ��ΪĿ���ַ������ɵ����ַ���ɵ�(Ȼ��ʵ���������ܻ��������)�� "����"Ԫ�ַ� (^) ��ƥ���ַ����Ŀ�ʼλ�ã� ��"��ĩ"Ԫ�ַ� ($) ��ƥ���ַ���ĩβ�� �������Ļ��з�(���������� D ���η�)�������Ϊ�� perl ��ͬ�� ��������η�����֮��"����"��"��ĩ"�ͻ�ƥ��Ŀ���ַ��������⻻�з�֮ǰ��֮�����⣬ ���ֱ�ƥ��Ŀ���ַ������ʼ����ĩβλ�á����ͬ�� perl �� /m ���η������Ŀ���ַ��� ��û�� "\n" �ַ�������ģʽ��û�г��� ^ �� $������������η��������κ�Ӱ�졣
s (PCRE_DOTALL)
���������������η���ģʽ�еĵ��Ԫ�ַ�ƥ�������ַ����������з������û����� ���η�����Ų�ƥ�任�з���������η���ͬ�� perl �е�/s���η��� һ��ȡ���ַ������ [^a] ����ƥ�任�з�������������������η������á�
x (PCRE_EXTENDED)
���������������η���ģʽ�е�û�о���ת��Ļ����ַ����еĿհ������ַ��ܻᱻ���ԣ� ����λ��һ��δת����ַ����ⲿ��#�ַ�����һ�����з�֮����ַ�Ҳ�����ԡ� ������η� ��ͬ�� perl �е� /x ���η���ʹ������ģʽ�п��԰���ע�͡� ע�⣺������������ַ��� �հ��ַ� ���Dz�����ģʽ�������ַ������г��֣��������� (?( ������һ����������(��ע: �����﷨����� �����ַ�������������ֿհ��ַ��ᵼ�±������ ����(?(�ͻᵼ�´���)��
e (PREG_REPLACE_EVAL)
Warning

This feature was DEPRECATED in PHP 5.5.0, and REMOVED as of PHP 7.0.0.

�����������������õ����η��� preg_replace() �ڽ����˶��滻�ַ����� ���������滻֮��, ���滻����ַ�����Ϊphp ��������ִ��(eval ������ʽ)����ʹ��ִ�н�� ��Ϊʵ�ʲ����滻���ַ����������š�˫���š���б��(\)�� NULL �ַ��� ���������滻ʱ�ᱻ�÷�б��ת��.
Caution

The addslashes() function is run on each matched backreference before the substitution takes place. As such, when the backreference is used as a quoted string, escaped characters will be converted to literals. However, characters which are escaped, which would normally not be converted, will retain their slashes. This makes use of this modifier very complicated.

Caution

��ȷ�� replacement �����ɺϷ� php �����ַ�����ɣ����� php ���� ��preg_replace() ���õ����ϲ���һ�����ʹ���

Caution

������ʹ�ô����η����������ײ�����ȫ©����

<?php
$html 
$_POST['html'];

// uppercase headings
$html preg_replace(
    
'(<h([1-6])>(.*?)</h\1>)e',
    
'"<h$1>" . strtoupper("$2") . "</h$1>"',
    
$html
);

����ʾ�������ܹ����������ַ������ã� <h1>{${eval($_GET[php_code])}}</h1>�� �����ù�����ִ��������Ҫ�� PHP ���룬������ȫ��͸����������

Ϊ����ֹ����Զ�̴���ִ�й���������ʹ�� preg_replace_callback() �����

<?php
$html 
$_POST['html'];

// uppercase headings
$html preg_replace_callback(
    
'(<h([1-6])>(.*?)</h\1>)',
    function (
$m) {
        return 
"<h$m[1]>" strtoupper($m[2]) . "</h$m[1]>";
    },
    
$html
);

Note:

�� preg_replace() ʹ�ô����η������� PCRE �������Դ����η���

A (PCRE_ANCHORED)
���������������η���ģʽ��ǿ��Ϊ"ê��"ģʽ��Ҳ����˵Լ��ƥ��ʹ����� Ŀ���ַ����Ŀ�ʼλ�����������Ч��ͬ������ʹ���ʵ���ģʽ������������� ��Ҳ�� perl ��ʵ������ģʽ��Ψһ;����
D (PCRE_DOLLAR_ENDONLY)
���������η������ã�ģʽ�е�Ԫ�ַ���Ԫ���Ž���ƥ��Ŀ���ַ�����ĩβ�����������η� û�����ã����ַ�����һ�����з���βʱ�� ��Ԫ���Ż���ƥ��û��з�(������ƥ��֮ǰ���κλ��з�)�� ������������η�m��������η�������. �� perl ��û��������η���ͬ�����η���
S
��һ��ģʽ��Ҫ���ʹ�õ�ʱ��Ϊ�˵õ�ƥ���ٶȵ�������ֵ�û���һЩʱ�� �������һЩ����ķ��������������������η����������ķ����ͻ�ִ�С���ǰ�� ���ֶ�һ��ģʽ�ķ������������ڷ�ê��ģʽ��ƥ��(��û�е����Ĺ̶���ʼ�ַ�)��
U (PCRE_UNGREEDY)
������η���ת�����ʵ�"̰��"ģʽ�� ʹ����Ĭ��Ϊ��̰���ģ�ͨ�����ʺ����? �ķ�ʽ����ʹ���Ϊ̰���ġ���� perl �Dz����ݵġ� ��ͬ������ʹ�� ģʽ�����η����� (?U)�������ã� ���������ʺ����ʺű�����̰��(����.*?)��

Note:

�ڷ�̰��ģʽ��ͨ������ƥ�䳬�� pcre.backtrack_limit ���ַ���

X (PCRE_EXTRA)
������η����� PCRE �� perl �����ݵĸ������ܡ�ģʽ�е����ⷴб�ߺ�� ingen һ�� û�����⺬����ַ����ᵼ��һ�������Դ˱�����Щ�ַ��Ա�֤�������ԡ� Ĭ������£��� perl �У���б�߽���һ��û�����⺬����ַ�����Ϊ�Ǹ��ַ���ԭ�ġ� ��ǰû������������������η����ơ�
J (PCRE_INFO_JCHANGED)
�ڲ�ѡ������(?J)�޸ı��ص�PCRE_DUPNAMESѡ��������������� (��ע��ֻ��ͨ���ڲ�ѡ�����ã��ⲿ�� /J ���û��������)
u (PCRE_UTF8)
����������һ���� perl �����ݵĸ��ӹ��ܡ� ģʽ��Ŀ���ַ���������Ϊ�� utf-8 �ġ� ��Ч��Ŀ���ַ����ᵼ�� preg_* ����ʲô��ƥ�䲻���� ��Ч��ģʽ�ַ����ᵼ�� E_WARNING ����Ĵ��� PHP 5.3.4 ��5�ֽں�6�ֽڵ� UTF-8 �ַ����б�����Ϊ��Ч��resp. PCRE 7.3 2007-08-28���� ��ǰ�ͱ���Ϊ����Ч�� UTF-8��