正規表現
PHP には正規表現関数ライブラリのセットが 2 つあります。これら 2 つの機能は似ていますが、実行効率が若干異なります。
1 つのセットは PCRE (Perl 互換正規表現) によって提供されます。式) ライブラリ 。接頭辞「preg_」が付いた名前の関数。
POSIX (Portable Operating System Interface of Unix) 拡張機能 (PHP のデフォルト) によって提供されるセット。接頭辞「ereg_」が付いた名前の関数を使用します。
PHP では、正規表現には 3 つの関数があります。
マッチングは、文字列から情報を抽出するためにもよく使用されます。
一致したテキストを新しいテキストに置き換えます。
文字列を小さな情報のセットに分割します。
正規表現には少なくとも 1 つのアトムが含まれます。
アトム (英語文字などの通常の文字)
メタキャラクター (特殊な機能を持つ文字)
パターン修正文字 (正規表現のセマンティクスの変更)
アトム (Atom)
a~z、A~Z、0~9 などの単一の文字、数字。
(ABC)のようなパターン単位は、複数の原子から構成される大きな原子として理解できます。
[ABC] などのアトミック テーブル。
再利用されたパターン単位 (\1 など)
一般的なエスケープ文字 (d、D、w など)
エスケープ メタ文字 (*,. など)
POSIX 正規表現全体POSIX 正規表現の名前は、Unix のポータブル オペレーティング システム インターフェイス、つまり UNIX ポータブル オペレーティング システム実装インターフェイスを意味します。
POSIX 正規表現の構築は、数式の作成と同じです。つまり、さまざまなメタキャラクタと演算子を使用して小さな式を組み合わせて、より大きな式を作成します。
メタ文字
メタ文字は、正規表現を構築するために使用される特別な意味を持つ文字です。メタキャラクター自体を正規表現に含める場合は、その前に「」を付けてエスケープする必要があります。
メタキャラクターの説明
* 前のアトムと一致します
0 回、1 回以上 1 と一致します。前のアトム
に 0 回以上一致しますか? 前のアトム
に 0 回または 1 回一致します | [1-9]|[a-b]|[A-Z] およびすべての一致が true です
^ 文字列の先頭のアトムと一致します。 たとえば、abscd===^afdgfgf は
$ と一致します。 文字列の末尾のアトムと一致します。 たとえば、dasdsv===v$
[] マッチング方法括弧内の任意の原子 例: s===[dsadas]
[^] 角括弧内の原子を除く任意の文字と一致します。 例: aaaaa===[dddd]
{m} 前の原子が正確に m 回出現する
{m,n} は、前の原子が少なくとも m 回、少なくとも n 回 (n>m) 出現することを意味します
{m,} は、前の原子が m 回以上出現することを意味します回
( ) 全体はアトム
を表します。 改行を除く任意の文字と一致します。
^ $ これら 2 つの元の文字をまとめて、区切り付き
abd===^abc$ と呼びます。この方法のみです。 can Match
パターンマッチング順序
order メタキャラクター 説明
1 () パターン単位
2 ? * {} 繰り返し一致
3 ^$ 境界制限
4 | パターン選択
POSIX 正規表現関数
ereg() および eregi()
ereg_replace() および eregi_replace( )
split() および spliti()
ereg() および eregi() ereg() 文字列マッチング関数、eregi() は ereg() 関数のサイズ無視バージョンです
構文形式:if (!ereg('^[^./][^/]*$', $userfile))//出力形式と一致しません die
{
die('これは不正なファイル名です! ');
}
ereg_replace() および eregi_replace (大文字と小文字を区別しない)
string eregi_replace ("正規表現"、"置換対象文字"、"置換対象")
構文形式: $string = "これはテストです";
echo str_replace(" is", "was", $string);
echo ereg_replace("( )is", "\1was", $string ) ;\1 最初の全体
を継承します echo ereg_replace("(( )is)", "\2was", $string);\2 2 番目の全体
split() および spliti を継承します (大文字と小文字は無視します) ) 正規表現を使用して文字列を配列に分割します
list: 配列内の値に変数を割り当てます
構文形式: $date = "04/30/1973"
list($month, $day, $year) = split ('[/.-]', $date);// 3 つの変数の対応する形式をリストします// どのような形式で、誰を分割するか
echo " Month: $ month; Day: $day; Year: $year
n";
出力結果 月: 04; 日: 30; 年: 1973