php小編香蕉為您介紹如何取得不符合遮罩的起始子字串的長度。在PHP中,可以使用preg_match函數結合正規表示式來實現此功能。首先,使用正規表示式匹配不需要的字符,然後透過preg_match函數取得匹配的位置,最後計算起始子字串的長度。這樣就可以輕鬆實現取得不匹配遮罩的起始子字串長度的功能。
#問題:PHP 如何取得不符合遮罩的起始子字串的長度
解決方案:
#使用 preg_match()
函數,它傳回符合正規表示式的子字串的長度。透過使用否定前瞻斷言 (?!)
,可以符合不符合指定遮罩的子字串。
程式碼範例:
#$subject = "This is a test string"; $mask = "/(t.*)/"; $pattern = "/^(?:(?!$mask).)*$/"; preg_match($pattern, $subject, $matches); $length = strlen($matches[0]);
解釋:
preg_match()
函數檢查給定字串 $subject
是否與正規表示式 $pattern
相符。 $pattern
正規表示式:^
:錨定字串開頭。 (?:...)*
:符合不符合子模式(...)的任何字元的零次或多次。 (?!$mask)
:否定前瞻性斷言,確保不符合 $mask
。 $
:錨定字串結尾。 $matches
陣列包含符合項,其中 $matches[0]
是不符合遮罩的起始子字串。 strlen($matches[0])
傳回子字串的長度。 附加說明:
$mask
是有效的。 strspn()
函數作為替代方案,它計算直到找到第一個匹配字元為止的字元數。 完整的程式碼範例,使用 strspn()
:
$subject = "This is a test string"; $mask = "t"; $length = strspn($subject, $mask, 0, strlen($subject) - 1);
優點:
strspn()
對於長字串更有效。 缺點:
以上是PHP如何取得不符合遮罩的起始子字串的長度的詳細內容。更多資訊請關注PHP中文網其他相關文章!