ホームページ  >  記事  >  バックエンド開発  >  PHP マスクに一致しない開始部分文字列の長さを取得する方法

PHP マスクに一致しない開始部分文字列の長さを取得する方法

王林
王林転載
2024-03-19 12:04:19488ブラウズ

phpエディタBananaは、一致しないマスクの開始部分文字列の長さを取得する方法を紹介します。 PHP では、preg_match 関数を正規表現と組み合わせて使用​​して、この機能を実現できます。まず、正規表現を使用して不要な文字と一致し、次に preg_match 関数を通じて一致する位置を取得し、最後に開始部分文字列の長さを計算します。これにより、一致しないマスクの開始部分文字列長を取得する関数の実装が容易になります。

質問: PHP で一致しないマスクの開始部分文字列の長さを取得する方法

######解決:######

preg_match() 関数を使用します。この関数は、

正規表現

に一致する部分文字列の長さを返します。否定先読みアサーション (?!) を使用すると、指定されたマスクに一致しない部分文字列を一致させることができます。 コード例:

$subject = "これはテスト文字列です"; $mask = "/(t.*)/"; $pattern = "/^(?:(?!$mask).)*$/"; preg_match($pattern, $subject, $matches); $length = strlen($matches[0]); ######説明する:######

preg_match()
関数は、指定された文字列

$subject が正規表現 $pattern

と一致するかどうかをチェックします。
  • $パターン 正規表現: #^: 文字列の先頭を固定します。
  • (?:...)*: サブパターン (...) に一致しない任意の文字の 0 個以上の出現と一致します。
    • (?!$mask): 先読みアサーションを否定し、$mask
    • が一致しないことを確認します。
    • #$: 文字列の末尾を固定します。
    • $matches
    • 配列
    • には一致が含まれます。$matches[0] は、一致しないマスクの開始部分文字列です。
  • strlen($matches[0])
  • 部分文字列の長さを返します。 ######追加情報:###### マスク正規表現 $mask が有効であることを確認してください。
  • 否定先読みアサーションは効率が低いため、長い文字列には推奨されません。 最初に一致する文字が見つかるまで文字数をカウントする
  • strspn()
関数を代わりに使用することを検討してください。

    strspn()
  • を使用した完全なコード例:
  • $subject = "これはテスト文字列です"; $マスク = "t"; $length = strspn($subject, $mask, 0, strlen($subject) - 1);
  • ######アドバンテージ:######
  • strspn() 長い文字列の場合はより効率的です。
コードがより簡潔になりました。

欠点:

複雑なマスク正規表現はサポートされていません。 

以上がPHP マスクに一致しない開始部分文字列の長さを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlsjlt.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。