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 是一家位於比利時安特衛普的網頁設計公司。您可以在我們的網站上找到所有開源專案的概述。
我們投入了大量資源來創建一流的開源套件。您可以透過購買我們的一款付費產品來支持我們。
我們非常感謝您從家鄉寄給我們一張明信片,並註明您正在使用我們的哪種套餐。您可以在我們的聯絡頁面上找到我們的地址。我們在虛擬明信片牆上發布所有收到的明信片。
您可以透過 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
請參閱變更日誌以了解有關最近更改內容的更多資訊。
詳細資訊請參閱貢獻。
請查看我們的安全政策,以了解如何通報安全漏洞。
您可以自由使用這個軟體包,但如果它進入您的生產環境,我們非常感謝您從您的家鄉給我們寄一張明信片,註明您正在使用我們的哪個軟體包。
我們的地址是:Spatie, Kruikstraat 22, 2018 安特衛普, 比利時。
我們在公司網站上發布所有收到的明信片。
麻省理工學院許可證 (MIT)。請參閱許可證文件以獲取更多資訊。