2024 PHP Conference Japan

預定義常數

以下常數由此擴充功能定義,並且只有在擴充功能已編譯到 PHP 中或在執行階段動態載入時才會可用。

PREG 常數
常數 說明
PREG_PATTERN_ORDER (整數) 排序結果,使 $matches[0] 是完整模式比對的陣列,$matches[1] 是由第一個括號子模式比對的字串陣列,依此類推。此旗標僅與 preg_match_all() 一起使用。  
PREG_SET_ORDER (整數) 排序比對結果,讓 $matches[0] 成為第一組匹配的陣列,$matches[1] 成為第二組匹配的陣列,依此類推。這個旗標僅用於 preg_match_all()  
PREG_OFFSET_CAPTURE (整數) 請參閱 PREG_SPLIT_OFFSET_CAPTURE 的說明。  
PREG_SPLIT_NO_EMPTY (整數) 這個旗標指示 preg_split() 只返回非空的片段。  
PREG_SPLIT_DELIM_CAPTURE (整數) 這個旗標指示 preg_split() 也要擷取分隔符號模式中的括號表達式。  
PREG_SPLIT_OFFSET_CAPTURE (整數) 如果設定了這個旗標,對於每個發生的匹配,也會返回附加的字串偏移量。請注意,這會改變返回值的陣列,其中每個元素都是一個陣列,包含在偏移量 0 處的匹配字串及其在主體中偏移量 1 處的字串偏移量。這個旗標僅用於 preg_split()  
PREG_UNMATCHED_AS_NULL (整數) 這個旗標指示 preg_match()preg_match_all() 將未匹配的子模式以 null 值包含在 $matches 中。如果沒有這個旗標,未匹配的子模式會被回報為空字串,就像它們是空的匹配一樣。設定這個旗標可以區分這兩種情況。 7.2.0
PREG_NO_ERROR (整數) 如果沒有錯誤,則由 preg_last_error() 返回。 5.2.0
PREG_INTERNAL_ERROR (整數) 如果發生內部 PCRE 錯誤,則由 preg_last_error() 返回。 5.2.0
PREG_BACKTRACK_LIMIT_ERROR (整數) 如果 回溯限制 已耗盡,則由 preg_last_error() 返回。 5.2.0
PREG_RECURSION_LIMIT_ERROR (整數) 如果 遞迴限制 已耗盡,則由 preg_last_error() 返回。 5.2.0
PREG_BAD_UTF8_ERROR (整數) 如果最後一個錯誤是由格式錯誤的 UTF-8 資料引起的(僅在以 UTF-8 模式 執行正規表達式時),則由 preg_last_error() 返回。 5.2.0
PREG_BAD_UTF8_OFFSET_ERROR (整數) 如果偏移量並非指向有效的 UTF-8 字碼點的開頭,preg_last_error() 會回傳此值(僅在以 UTF-8 模式 執行正規表示式時)。 5.3.0
PREG_JIT_STACKLIMIT_ERROR (整數) 如果上一個 PCRE 函式因為 JIT 堆疊空間不足而失敗,preg_last_error() 會回傳此值。 7.0.0
PCRE_VERSION (字串) PCRE 版本和發布日期(例如 "7.0 2006年12月18日")。 5.2.4
PCRE_VERSION_MAJOR (整數) PCRE 主要版本號。  
PCRE_VERSION_MINOR (整數) PCRE 次要版本號。  
PCRE_JIT_SUPPORT (布林值) 指示 PCRE JIT 支援是否可用。  
PREG_GREP_INVERT (整數) 回傳不符合給定模式的元素。  
新增註釋

使用者貢獻的註釋 2 則註釋

erutan409 at hotmail dot com
9 年前
PREG_PATTERN_ORDER: 1
PREG_SET_ORDER: 2
PREG_OFFSET_CAPTURE: 256
PREG_SPLIT_NO_EMPTY: 1
PREG_SPLIT_DELIM_CAPTURE: 2
PREG_SPLIT_OFFSET_CAPTURE: 4
PREG_NO_ERROR: 0
PREG_INTERNAL_ERROR: 1
PREG_BACKTRACK_LIMIT_ERROR: 2
PREG_RECURSION_LIMIT_ERROR: 3
PREG_BAD_UTF8_ERROR: 4
PREG_BAD_UTF8_OFFSET_ERROR: 5
PCRE_VERSION: %您的版本號%
Robert
8 年前
PHP 7.0.0 引入的新常數 PREG_JIT_STACKLIMIT_ERROR 的值為 6。

我在解析一個 112KB 的檔案時遇到這個錯誤碼。 preg_match_all 因為這個錯誤而失敗。有趣的是:符合的陣列包含了一些項目,但並非全部,因為指令失敗了(我沒有檢查回傳值)。

不幸的是,您無法設定 PCRE JIT 的堆疊大小。至少對我來說,唯一的解決方法是透過 php.ini (pcre.jit=0) 禁用 PCRE JIT。
To Top