Php の組み込みpreg_*
関数では、変数を参照渡ししたり、 false
またはnull
値をエラーとして扱ったりするなど、いくつかの奇妙なパターンが必要です。 spatie/regex
preg_match
、 preg_match_all
、 preg_replace
およびpreg_replace_callback
のためのよりクリーンなインターフェイスを提供します。
use Spatie Regex Regex ;
// Using `match`
Regex:: match ( ' /a/ ' , ' abc ' ); // `MatchResult` object
Regex:: match ( ' /a/ ' , ' abc ' )-> hasMatch (); // true
Regex:: match ( ' /a/ ' , ' abc ' )-> result (); // 'a'
// Capturing groups with `match`
Regex:: match ( ' /a(b)/ ' , ' abc ' )-> result (); // 'ab'
Regex:: match ( ' /a(b)/ ' , ' abc ' )-> group ( 1 ); // 'b'
// Setting defaults
Regex:: match ( ' /a(b)/ ' , ' xyz ' )-> resultOr ( ' default ' ); // 'default'
Regex:: match ( ' /a(b)/ ' , ' xyz ' )-> groupOr ( 1 , ' default ' ); // 'default'
// Using `matchAll`
Regex:: matchAll ( ' /a/ ' , ' abcabc ' )-> hasMatch (); // true
Regex:: matchAll ( ' /a/ ' , ' abcabc ' )-> results (); // Array of `MatchResult` objects
// Using replace
Regex:: replace ( ' /a/ ' , ' b ' , ' abc ' )-> result (); // 'bbc' ;
Regex:: replace ( ' /a/ ' , function ( MatchResult $ result ) {
return $ result -> result () . ' Hello! ' ;
}, ' abc ' )-> result (); // 'aHello!bc' ;
Spatie は、ベルギーのアントワープに拠点を置くウェブデザイン会社です。当社のすべてのオープンソース プロジェクトの概要は、当社の Web サイトでご覧いただけます。
私たちはクラス最高のオープンソース パッケージの作成に多くのリソースを投資しています。有料製品のいずれかを購入することで、私たちをサポートできます。
当社のどのパッケージを使用しているかについて、故郷から葉書を送っていただき、誠にありがとうございます。当社の住所は、お問い合わせページに記載されています。受け取ったすべてのポストカードをバーチャル ポストカード ウォールに公開します。
パッケージは、composer 経由でインストールできます。
composer require spatie/regex
被写体のパターンと一致します。最初の一致のMatchResult
オブジェクトを返します。
/ * *
* @ param string $ pattern
* @ param string $ subject
*
* @ return Spatie Regex MatchResult
* /
Regex:: match (string $ pattern , string $ subject ): MatchResult
MatchResult::hasMatch(): bool
パターンが主題と一致するかどうかを確認します。
Regex:: match ( ' /abc/ ' , ' abc ' )-> hasMatch (); // true
Regex:: match ( ' /def/ ' , ' abc ' )-> hasMatch (); // false
MatchResult::result(): string
行われた完全な一致を返します。一致しない場合はnull
を返します。
Regex:: match ( ' /abc/ ' , ' abc ' )-> result (); // 'abc'
Regex:: match ( ' /def/ ' , ' abc ' )-> result (); // null
MatchResult::group(int $id): string
キャプチャされたグループの内容を返します (1 から始まるインデックスを使用)。グループが存在しない場合はRegexFailed
例外をスローします。
Regex:: match ( ' /a(b)c/ ' , ' abc ' )-> group ( 1 ); // 'b'
Regex:: match ( ' /a(b)c/ ' , ' abc ' )-> group ( 2 ); // `RegexFailed` exception
被写体のパターンと一致します。すべての一致を含むMatchAllResult
オブジェクトを返します。
/ * *
* @ param string $ pattern
* @ param string $ subject
*
* @ return Spatie Regex MatchAllResult
* /
public static function matchAll( string $ pattern , string $ subject ): MatchAllResult
MatchAllResult::hasMatch(): bool
パターンが主題と一致するかどうかを確認します。
Regex:: matchAll ( ' /abc/ ' , ' abc ' )-> hasMatch (); // true
Regex:: matchAll ( ' /abc/ ' , ' abcabc ' )-> hasMatch (); // true
Regex:: matchAll ( ' /def/ ' , ' abc ' )-> hasMatch (); // false
MatchAllResult::results(): array
MatchResult
オブジェクトの配列を返します。
$ results = Regex:: matchAll ( ' /ab([a-z])/ ' , ' abcabd ' )-> results ();
$ results [ 0 ]-> result (); // 'abc'
$ results [ 0 ]-> group ( 1 ); // 'c'
$ results [ 1 ]-> result (); // 'abd'
$ results [ 1 ]-> group ( 1 ); // 'd'
件名のパターンを置き換えます。 ReplaceResult
オブジェクトを返します。
/ * *
* @ param string | array $ pattern
* @ param string | array | callable $ replacement
* @ param string | array $ subject
* @ param int $ limit
*
* @ return Spatie Regex ReplaceResult
* /
public static function replace( $ pattern , $ replacement , $ subject , $ limit = - 1 ): ReplaceResult
ReplaceResult::result(): mixed
Regex:: replace ( ' /a/ ' , ' b ' , ' abc ' )-> result (); // 'bbc'
Regex::replace
呼び出し可能オブジェクトでも機能します。呼び出し可能オブジェクトは、引数としてMatchResult
インスタンスを受け取ります。
Regex:: replace ( ' /a/ ' , function ( MatchResult $ matchResult ) {
return str_repeat ( $ matchResult -> result (), 2 );
}, ' abc ' )-> result (); // 'aabc'
パターン、置換、および件名を配列にすることもできます。 Regex::replace
これらのインスタンスではpreg_replace
とまったく同じように動作します。
Regex
メソッドで何か問題が発生すると、 RegexFailed
例外がスローされます。 preg_last_error()
をチェックする必要はありません。
$ composer test
最近の変更点の詳細については、CHANGELOG を参照してください。
詳細については、「貢献」を参照してください。
セキュリティの脆弱性を報告する方法については、セキュリティ ポリシーをご覧ください。
このパッケージを自由に使用できますが、実稼働環境に届いた場合は、どのパッケージを使用しているかを記載した葉書を故郷から送っていただければ幸いです。
私たちの住所は、Spatie, Kruikstraat 22, 2018 Antwerp, Belgiumです。
いただいたはがきはすべて当社ホームページに掲載しております。
MIT ライセンス (MIT)。詳細については、ライセンス ファイルを参照してください。